php在ajax完成之前运行

php run before ajax is completed

本文关键字:运行 ajax php      更新时间:2023-09-26

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

我在JS中有一个正常的请求:

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

在PHP中:

$myphp = $_GET['myvar']; 

但如果我回显$myphp,它会返回"未定义",如果我提醒它,它会显示值;这意味着php脚本在收到ajax请求之前就已经运行了。有什么办法可以让PHP等待吗?

谢谢。

将需要变量的PHP放在自己的脚本中,并从ajax调用中调用它,一旦ajax调用得到响应,则根据需要更新DOM。

PHP运行在服务器上,然后javascript运行在客户端上进行ajax调用,然后PHP运行在返回数据的服务器上,随后javascript获取数据并对其进行处理。

$.get('phpscript.php', {myvar: myvar}, function(data) {
  $('.result').html(data);
});

php文件中有这样的内容:

$myphp = $_GET['myvar']; 
echo $myphp;

简单的答案是,不,你不能让PHP等待。PHP只在服务器端运行,在发送AJAX请求时,根据定义,页面已经发送到客户端。

您可能需要进行一些重构。如果该变量绝对需要用于PHP函数,那么您可能需要将该逻辑移动到"phpscript.PHP"中,或者(不太理想)当您从第一个函数获得响应时,您可能需要发出另一个AJAX请求。

但我的猜测是,更常见的情况是,您可能只需要弄清楚如何用javascript做您想要的事情。如果您想要的只是一个相当于PHP echo的东西,那么您需要使用Javascript(或JQuery)DOM操作。

编辑:我忘了提一下,另一种选择是在发送页面之前,简单地在服务器端完成所有PHP内容,而不是AJAX,你想用PHP做一些事情,比如包括其他PHP脚本和从中调用方法。但是,你在服务器端做的一切,用户都坐在那里看着一个空白屏幕,等待页面加载。因此,对于任何不太快的事情,这都不是一个选择。