如果对某些请求没有响应,浏览器是否会再次发送ajax请求?

时间:2014-10-14 15:18:45

标签: node.js browser

我正在创建一个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');

1 个答案:

答案 0 :(得分:0)

  

奇怪的是,浏览器会多次发送ajax请求。

不,实际上如果发生错误,您应该something more complicated再次发送请求。

我的建议是在应用程序$.ajax中放置一个断点并检查停止的次数。您可以使用堆栈来了解呼叫的来源。

  

这是因为没有从服务器端返回响应吗?

完全没有,如果请求到期,将调用错误回调。 (relatedrelated) 所以,by default没有建立超时。

尝试

$.ajax( { ..., timeout:3000 ,... } );
  

浏览器是否会尝试再次发送这些待处理请求并获得响应?

再次,不。

  

我在这个应用程序中使用socket.io。这个问题是由于socket.io吗?

我猜是无关的。