将Javascript字符串传递给PHP

如何解决将Javascript字符串传递给PHP

| 我想将javascript字符串传递给php ...在脚本中的代码之后正确。
<script type=\"text/javascript\">
  var myvar = \"mytext\" ;

 <?php echo myvar ; ?>
</script>
这行不通。 我该怎么办 ?     

解决方法

当有人访问网站时,通常会发生以下情况: 他们的浏览器将请求发送到服务器。 服务器评估该请求。 服务器意识到,“ Egad,他们正在请求的页面具有PHP!” 服务器评估PHP,仅将结果发送到浏览器。 浏览器解析其接收的内容。 浏览器意识到,““哎呀,我收到的页面有JavaScript!” 浏览器将完全在客户端计算机上评估JavaScript。 因此,PHP和JavaScript基本上处于流程的不同阶段。只有服务器处理PHP,只有客户端处理JavaScript。 要将字符串“送给” PHP,您必须请求PHP页面,并将该字符串作为GET变量发送:
http://www.yourdomain.com/some_php_page.php?myvar=mytext
有几种使用JavaScript的方法。 如果您只想在PHP页面上发出请求,而不必担心会收到任何信息,则可以创建一个图像并将URL用作源:
var fakeImg = new Image();
fakeImg.src = \'http://www.yourdomain.com/some_php_page.php?myvar=mytext\';
即使您正在请求映像,服务器也不知道,并且将通过调用评估请求的PHP等来处理您的请求。 您可以提出实际的AJAX请求。首先创建一个XMLHttpRequest对象:
var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject(\'Microsoft.XMLHTTP\');
IE中存在一些与AJAX请求的缓存响应有关的问题,因此请使URL唯一:
var url = \'http://www.yourdomain.com/some_php_page.php?myvar=mytext&unique=whatever\';
告诉您的XHR您希望它去哪里以及如何到达那里:
xhr.open(\'GET\',url,true);
// The \"true\" parameter tells it that we want this to be asynchronous
设置一种方法来检查何时收到响应:
xhr.onreadystatechange = function () {
    if (xhr.readyState === 4 && xhr.status < 400) {
        success(xhr.responseText);
    }
};
最后,发送请求:
xhr.send(null);
// We set \"null\" because some browsers are pissy
注意事项: 您必须自己构建
success
函数,以处理PHP页面将返回的字符串。 您可以根据需要传递函数
xhr.responseXML
,但这通常对我来说很麻烦。 我使用
onreadystatechange
的方式(我相信)会在某些版本的IE中引入内存泄漏     ,PHP是在服务器端执行的,而javascript是客户端,因此这意味着在发送javascript代码时已经执行了PHP。 您可能需要研究AJAX。     ,您应该清楚客户端和服务器端代码之间的区别。您之前在php代码中引入的变量没有分配,因为该变量是在客户端设置的。因此,您的代码示例实质上是错误的。如果希望客户机(javascript)上存在的值在服务器(php)上可用,则需要对javascript的xmlhttprequest对象(也称为ajax)做一些事情。 您可以通过其他方式进行处理...在javascript中打印php值。这是因为该脚本不是在服务器端创建的,而是在浏览器对其进行处理之前发送给客户端的。 不确定您要达到的目标,但这可能会有所帮助。     ,您的示例有些令人困惑:
<script type=\"text/javascript\">
  var myvar = \"mytext\" ;

 <?php echo myvar ; ?>
</script>
因为如果我这样做:
<script type=\"text/javascript\">
  <?php $myvar = \"mytext\"; ?>
  var myvar = \"<?php echo $myvar; ?>\" ;
</script>
然后将JavaScript值
myvar
设置为PHP值
$myvar
,使它们保持不变。如果您想做其他事情,则需要扩展示例。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-