我知道PHP首先运行但是有没有办法让PHP等待ajax请求然后运行它的脚本?我在这里有一个PHP脚本,我想运行,但我需要一个来自我的JS文件的变量,以便它成功运行。所以想知道它是否可能?
我所拥有的是我的JS中的正常请求:
var myvar = data;
$.get('phpscript.php', {myvar: myvar} );
在PHP中:
$myphp = $_GET['myvar'];
但是,如果我回显$myphp
它返回“未定义”,如果我提醒它但它显示值;这意味着php脚本甚至在从ajax获取请求之前就已经运行了。我可以用任何方式让PHP等待吗?
感谢。
答案 0 :(得分:2)
将需要变量的PHP放在自己的脚本中并从ajax调用中调用它,一旦ajax调用获得响应,就会根据需要更新DOM。
PHP在服务器上运行,然后javascript在客户端上运行以进行ajax调用,然后PHP在服务器上运行返回数据,然后javascript获取数据并对其执行某些操作。
答案 1 :(得分:0)
$.get('phpscript.php', {myvar: myvar}, function(data) {
$('.result').html(data);
});
在php文件中有类似的内容:
$myphp = $_GET['myvar'];
echo $myphp;
答案 2 :(得分:0)
简短的回答是,不,你不能让PHP等待。 PHP仅在服务器端运行,在发送AJAX请求时,根据定义,页面已经发送到客户端。
你可能不得不做一些重构。如果变量绝对需要用于PHP函数,那么您可能需要将该逻辑移动到'phpscript.php'或(不太理想),当您从第一个获得响应时,您可能需要发出另一个AJAX请求。 / p>
但我的猜测是,更常见的是,你可能只需要弄清楚如何用javascript做你想做的事情。如果您想要的只是一个与PHP回应相同的东西,那么您将需要使用Javascript(或JQuery)DOM操作。
编辑:我忘了提到,另一种选择只是在发送页面之前在服务器端执行所有PHP的东西,而不是AJAX,你想在PHP中做一些事情,比如包括你的其他php脚本和调用它的方法。但是,你在服务器端做的一切,用户坐在那里看着等待页面加载的空白屏幕。因此,对于任何不太快的事情,这都不是一个选择。