我最近将我的XAMPP从1.8.1升级到1.8.3,其中包括将php从5.4升级到5.5,将mySQL从5.5升级到5.6。
升级后,我的ajax轮询脚本无效,我的代码如下:
//define setInterval in global variable, to be cleared later
myInterval = setInterval(function(){
//this alert works
alert('inside interval');
$.ajax({
url: "../php/pollScript.php",
dataType: "json",
data: {action: 'get_count' },
success: function(data){
//never reaches this function, alert is not seen
alert('success');
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
)};
}, 2000);
//use jquery ajax form to submit form that invokes long running php script
$("form").submit();
//interval is cleared in success function of ajax form submit
很明显,setInterval函数正在运行,但是ajax函数没有被执行,我确保使用 session_write_close();在长时间运行的脚本中,为了释放会话,在更新之前没有更改任何代码。有什么想法发生了什么?是否需要在 php.ini 中更改配置才能进行轮询?
添加错误处理程序后UPDATE:我得错误状态为0,无法想到为什么会发生这种情况,因为我没有更改任何代码,我读过这可能是你的ajax请求的结果在完成之前被取消....并且chrome dev工具中的pollingScript.php服务器没有命中 - >网络选项卡
长时间运行的脚本也可以正常运行。
答案 0 :(得分:0)
我希望我能在评论中清楚地发布这个内容,但现在就可以了。
我强烈建议您使用console.log()
代替alert()
,因为它更有用,如下所示:
//define setInterval in global variable, to be cleared later
myInterval = setInterval(function(){
//this alert works
alert('inside interval');
$.ajax({
url: "../php/pollScript.php",
dataType: "json",
data: {action: 'get_count' },
success: function(data){
//never reaches this function, alert is not seen
console.log(data);
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(xhr.status);
console.log(thrownError);
}
)};
}, 2000);
//use jquery ajax form to submit form that invokes long running php script
$("form").submit();
//interval is cleared in success function of ajax form submit
此外,无论您使用何种浏览器,都可以成为网络标签的最佳朋友。建议在刷新页面时打开此选项卡。
刷新页面时,在网络标签页中找到pollScript.php
,然后点击它即可。