所以我使用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);
}
});
});
我基本上想问的是:
另外,我正在使用NODEJS(请求)来构建应用程序,我只是使用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'
Accept-Encoding会有什么不同吗?
答案 0 :(得分:0)
此代码有什么问题吗?
您的实际代码似乎没有任何问题作为一个示例,可以在this example fiddle中看到同样的事情,并且工作得很好:
// 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(只有两个)?
这可能会有所不同,因为某些浏览器/网络服务器可能会限制来自同一主机名的并发连接数,但是如果您使用的数量很少,这应该不是问题。您可以通过以下方式显式禁用AJAX调用的缓存来检查是否存在可能的缓存问题:
cache: false
您可能需要考虑在浏览器中使用开发人员工具(F12)来查看每个请求/响应的外观,以确保它们正常工作: