Javascript 循环内的AJAX调用。只有一个请求完成
因此,我使用AJAX多次命中url,我面临的问题是,即使代码应该完成多个请求,也只能完成一个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
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的并行请求数量是否有限制(只有两个)
'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以查看其是否工作。