php在ajax完成之前运行

时间:2013-08-02 19:06:45

标签: php javascript ajax wait

我知道PHP首先运行但是有没有办法让PHP等待ajax请求然后运行它的脚本?我在这里有一个PHP脚本,我想运行,但我需要一个来自我的JS文件的变量,以便它成功运行。所以想知道它是否可能?

我所拥有的是我的JS中的正常请求:

var myvar = data; 
$.get('phpscript.php', {myvar: myvar} ); 

在PHP中:

$myphp = $_GET['myvar']; 

但是,如果我回显$myphp它返回“未定义”,如果我提醒它但它显示值;这意味着php脚本甚至在从ajax获取请求之前就已经运行了。我可以用任何方式让PHP等待吗?

感谢。

3 个答案:

答案 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脚本和调用它的方法。但是,你在服务器端做的一切,用户坐在那里看着等待页面加载的空白屏幕。因此,对于任何不太快的事情,这都不是一个选择。