如何解决将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 举报,一经查实,本站将立刻删除。