我想将一个javascript字符串传递给php ...在脚本中的代码之后是正确的.
<script type="text/javascript">
var myvar = "mytext" ;
<?php echo myvar ; ?>
</script>
Run Code Online (Sandbox Code Playgroud)
这不起作用.我该怎么办 ?
sdl*_*rhc 11
当有人访问网站时,通常会发生以下情况:
所以PHP和JavaScript基本上处于流程的不同端.只有服务器处理PHP,只有客户端处理JavaScript.
要向PHP"提供"字符串,您必须发出PHP页面的请求,将该字符串作为GET变量发送:
http://www.yourdomain.com/some_php_page.php?myvar=mytext
Run Code Online (Sandbox Code Playgroud)
使用JavaScript有几种方法可以做到这一点.
如果您只关心在PHP页面上发出该请求,并且您不需要担心收到任何信息,您只需创建一个图像并使用URL作为源:
var fakeImg = new Image();
fakeImg.src = 'http://www.yourdomain.com/some_php_page.php?myvar=mytext';
Run Code Online (Sandbox Code Playgroud)
即使您正在请求图像,服务器也不知道,并将通过调用PHP评估它来处理您的请求,等等.
您可以发出实际的AJAX请求.首先创建一个XMLHttpRequest对象:
var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
Run Code Online (Sandbox Code Playgroud)
IE中存在一些针对AJAX请求的缓存响应的问题,因此请将url设为唯一:
var url = 'http://www.yourdomain.com/some_php_page.php?myvar=mytext&unique=whatever';
Run Code Online (Sandbox Code Playgroud)
告诉你的XHR你想去哪里,以及你希望它如何到达那里:
xhr.open('GET', url, true);
// The "true" parameter tells it that we want this to be asynchronous
Run Code Online (Sandbox Code Playgroud)
设置一个方法,检查收到响应的时间:
xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status < 400) {
success(xhr.responseText);
}
};
Run Code Online (Sandbox Code Playgroud)
最后,发送请求:
xhr.send(null);
// We set "null" because some browsers are pissy
Run Code Online (Sandbox Code Playgroud)
请记住一些注意事项:
success
函数,以处理PHP页面将返回的字符串.xhr.responseXML
如果你愿意,你可以传递这个功能,但这对我来说通常只是麻烦.onreadystatechange
我的方式(我相信)会在某些版本的IE中引入内存泄漏