Javascript 循环内的AJAX调用。只有一个请求完成

Javascript 循环内的AJAX调用。只有一个请求完成,javascript,jquery,ajax,node.js,loops,Javascript,Jquery,Ajax,Node.js,Loops,因此,我使用AJAX多次命中url,我面临的问题是,即使代码应该完成多个请求,也只能完成一个AJAX请求。我在终端中运行了以下代码: var item_arr = ['a','b']; item_arr.forEach(function(item_name){ $.ajax({url:'https://example.com:port/', type:'POST', data:{ 'item':item_name }, success:function(res){ conso

因此,我使用AJAX多次命中url,我面临的问题是,即使代码应该完成多个请求,也只能完成一个AJAX请求。我在终端中运行了以下代码:

var item_arr = ['a','b'];

item_arr.forEach(function(item_name){

$.ajax({url:'https://example.com:port/',
type:'POST',
data:{ 'item':item_name },
    success:function(res){
    console.log(res);
    }
});

});
我基本上想问的是:

  • 这个代码有什么问题吗
  • 或者对特定url的并行请求数量是否有限制(只有两个)
另外,我正在使用NODEJS(request)来构建应用程序,我只是使用jquery来检查它是否在jquery中工作,但这两种技术在这个问题上的表现类似

更新: 正如Rion所建议的,我将curl请求与成功请求和失败请求进行了比较。成功点击的标题如下所示:

'Origin: http://evil.com/'
'Accept-Encoding: gzip, deflate' -H 'Accept-Language: en-US,en;q=0.8'
'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/49.0.2623.87 Chrome/49.0.2623.87 Safari/537.36'
'Content-Type: application/x-www-form-urlencoded'
'Accept: */*'
'Referer: http://stackoverflow.com/questions/33243685/nodejs-a-better-way-to-handle-ajax-request-to-the-server'
'Connection: keep-alive'
而对于不成功的请求,有以下标题:

'Accept: */*' 
'Referer: http://stackoverflow.com/questions/33243685/nodejs-a-better-way-to-handle-ajax-request-to-the-server'
'Origin: http://stackoverflow.com'
'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/49.0.2623.87 Chrome/49.0.2623.87 Safari/537.36'
'Content-Type: application/x-www-form-urlencoded'
接受编码有什么区别吗

这个代码有什么问题吗

您的实际代码似乎没有任何错误,因为在中可以看到一个执行相同操作的示例,并且工作正常:

// Define your values
var item_arr = ['a','b'];

$(function(){
    // Loop through them
    item_arr.forEach(function(item_name){
      // Post each one (JSFiddle URL for example purposes)
      $.post('/echo/html/', { 'item':item_name }, function(){
        alert(item_name);
      });
    });
});
如果这不起作用,那么我倾向于认为您发布到的URL有问题(即结果可能没有成功返回)

或者,对某个特定应用程序的并行请求数量是否有限制 url(只有两个)

这可能会有所不同,因为某些浏览器/web服务器可能会限制来自同一主机名的并发连接的数量,但是,对于您正在进行的少量连接,这应该不是一个真正的问题。您可以通过使用以下命令显式禁用AJAX调用的缓存来检查是否存在缓存问题:

cache: false

您可能想考虑使用浏览器中的开发工具(F12)来查看每个请求/响应看起来是什么样子,以确保它们正常工作:


你好,Rion,感谢您的快速回复。我也检查了我的服务器端,我注意到当我运行这段代码时,我的服务器端代码显示“向客户端发送一些json”。但客户方似乎并没有收到全部信息。尽管如此,我还是试着分别运行这些请求,它们运行得很好。另外,由于我使用的是nodeJS,我认为缓存不应该是一个问题?您可以尝试在success回调中放置
调试器
,并在执行时保持开发人员工具的打开状态。这将允许您深入查看您的响应,看看是否需要以不同的方式提取响应数据(有时您必须使用
res.d
来访问数据)。关于
缓存
,它可能不一定与您的案例相关,但对于大量使用它的场景,值得一提。Rion,请您查看问题描述。我已经更新了一点这个问题。注释部分不允许使用太多的字符。另外,我刚刚对失败的请求使用了Replay XHR功能,效果很好。但是在循环中使用时它不起作用。您可以尝试通过
dataType:'json'
dataType
属性设置为
json
,以查看这是否会对AJAX调用产生影响。此外,您是否尝试过查看请求是否作为查询字符串工作(即,将
'?item='+item_name
附加到URL以查看其是否工作。