我有一个Ajax脚本,每20秒就可以在我的服务器上调用一个php文件。Ajax成功,如果语句和echo mySQL查询结果
然后服务器运行一个简单的mysql查询来返回特定字段的内容。
如果这个字段是空白的,我希望php文件回显单词“pending”,当被成功处理程序捕获时,它会回想起初始函数。但是,如果该字段不是空白,它将包含我想要将用户重定向到的URL。该字段将更新从第一次通话开始5秒到5分钟之间的任何地方,并且该时间不能改变。
我认为主要问题可能与我的PHP文件,因为我不认为它是以成功处理程序识别的方式回显数据。然而,我已经详细说明了我的代码的两个部分,而成功处理程序似乎构建正确,我不是100%确定。
很新,所以如果道歉我没有正确地解释自己,但如果有人能帮助这将是巨大的:
更新 - 为清楚起见,我所寻求实现如下:
Ajax调用我的PHP文件。
PHP文件查询数据库
如果现场查询不包含任何数据回应“等待”这个词来阿贾克斯成功处理程序(IF),这反过来又回忆起最初的功能/ ajax调用。
如果所查询的字段包含数据(将是一个URL),将以通过window.location.assign(data)重定向用户的格式将此结果回显给ajax成功处理程序(ELSE)。
进一步更新
我设法解决这个问题使用来自@mamdouhalramadan和@martijn
我也改变setInterval来逐步的setTimeout作为该查询功能的建议的组合是导致反应叠起来如果服务器运行缓慢,并因此导致错误。我还添加了缓存:假的,并在成功处理程序进一步的选择要考虑到不同的效果,在IE浏览器:
AJAX
function poll() {
$.ajax({
url: 'processthree.php?lead_id='+lead_id,
type: "GET",
cache: false,
async: false,
success: function(data3) {
//alert("pending called " + data3)
if(data3.indexOf("pending") >-1){
setTimeout(poll, 20000);
}
else if ((navigator.userAgent.indexOf('MSIE') != -1)) {
//alert("Submit success - MSIE: " + data3);
parent.window.location.replace(data3);
}
else{
//alert("process three called " + data3)
window.top.location.assign(data3);
}
},
error: function(xhr, error){
//alert("Error");
//alert("Error: " + error + ", XHR status: " + xhr.status);
},
});
}
setTimeout(poll, 20000);
PHP
$query = ("SELECT column FROM table WHERE id = '$lead_id'") or die(mysql_error());
$result = mysql_query($query);
$return = array();
while($row = mysql_fetch_assoc($result))
{
$return = 'pending';
if($row['column'] != '')
{
$return = $row['column'];
}
}
echo $return;
缩进是你的朋友... –
我改变了你的代码了一下,你在mysql_query()上做了一个mysql_query(),修正了这个问题。在你的同时改变了if/else,同时改为可读性(IMO):) – Martijn
@Martijn - 你的编辑无效.. –