我想将一个javascript字符串传递给php ...在脚本中,代码后面的WHICH是正确的。将一个Javascript字符串传递给PHP
<script type="text/javascript">
var myvar = "mytext" ;
<?php echo myvar ; ?>
</script>
这是行不通的。 我该怎么办?
我想将一个javascript字符串传递给php ...在脚本中,代码后面的WHICH是正确的。将一个Javascript字符串传递给PHP
<script type="text/javascript">
var myvar = "mytext" ;
<?php echo myvar ; ?>
</script>
这是行不通的。 我该怎么办?
当有人访问一个网站,这通常是发生了什么:
因此,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请求缓存响应,所以使独特的网址:
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浏览器的某些版本+1正确使用单词“Egad” – Ender 2011-05-24 20:24:39
PHP是执行服务器端,而JavaScript是客户端,所以这意味着PHP已经在您发送您的JavaScript代码时执行。
您可能想要考虑AJAX。
好吧...我想不用ajax来做...但是你会如何用ajax做到这一点?代码示例? – 2011-05-24 20:13:11
@ mr.bio无法在PHP中使用JavaScript值(在同一页上),因为PHP已经执行了**。你需要发射另一个HTTP请求。 – Nick 2011-05-24 20:16:04
您应该清楚客户端和服务器端代码之间的区别。您在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值的PHP值为$myvar
,所以它们都保持不变。如果你想要做其他事情,你需要扩展你的例子。
您显然缺乏对PHP和JavaScript,服务器端和客户端之间差异的理解。我建议你在编写任何其他代码之前仔细阅读。 – Nick 2011-05-24 20:13:30