我正在创建一个Nodejs应用程序,我正在使用jQuery向服务器端发送ajax请求。
奇怪的是,浏览器会多次发送ajax请求。
这是因为没有从服务器端返回响应吗?
$.ajax({
type: "POST",
url: "/triggerBatchJobs",
data: JSON.stringify(buildInfo),
contentType: 'application/json'
}).done(function(msg){
console.log(msg);
});
我通过此代码片段发布了ajax请求,我监视chrome dev工具中的网络选项卡,发现请求保持挂起,因为服务器端没有返回响应。
浏览器是否会尝试再次发送这些待处理请求并获得响应?
BTW,我在这个应用程序中使用socket.io。这个问题是由于socket.io吗?
script.
var socket = io();
socket.on('complete',function(msg){
alert('Complete');
})
node.js中的
io.sockets.emit('complete');
答案 0 :(得分:0)
奇怪的是,浏览器会多次发送ajax请求。
不,实际上如果发生错误,您应该something more complicated再次发送请求。
我的建议是在应用程序$.ajax
中放置一个断点并检查停止的次数。您可以使用堆栈来了解呼叫的来源。
这是因为没有从服务器端返回响应吗?
完全没有,如果请求到期,将调用错误回调。 (related,related) 所以,by default没有建立超时。
尝试
$.ajax( { ..., timeout:3000 ,... } );
浏览器是否会尝试再次发送这些待处理请求并获得响应?
再次,不。
我在这个应用程序中使用socket.io。这个问题是由于socket.io吗?
我猜是无关的。