Javascript Ajax异步响应未加载到div中
这就是困扰我的问题。我的代码正在Javascript Ajax异步响应未加载到div中,javascript,jquery,ajax,asynchronous,Javascript,Jquery,Ajax,Asynchronous,这就是困扰我的问题。我的代码正在文档上运行。就绪。我需要请求是异步的,意思是async:true for (var i = 0; i < totalGraphs; i++) { var kpiId = kpiIds[i]; jQuery.ajax({ type: 'POST', url: graphUrl, data: "kpiId="+kpiId+"&divId="+(i+1), async: tru
文档上运行。就绪
。我需要请求是异步的,意思是async:true
for (var i = 0; i < totalGraphs; i++) {
var kpiId = kpiIds[i];
jQuery.ajax({
type: 'POST',
url: graphUrl,
data: "kpiId="+kpiId+"&divId="+(i+1),
async: true, //if false things are working fine
cache:false,
success: function(response){
document.getDocumentById("graph" + (i + 1)).innerHTML("hello");
},
error:function(XMLHttpRequest, textStatus, errorThrown) {
}
});
}
for(var i=0;i
此请求不会将hello放入graphX div中,但每当我放入async:false时,一切都正常。我真的需要请求是异步的
提前感谢您的帮助。我猜当成功返回时,I
计数会在您的循环中混淆<代码>成功
将在循环完成后返回,因此这将产生意外的结果
能否在响应中返回在数据中发送的i
值,然后在getDocumentById
方法中使用该值?我猜这会解决你的问题
要尝试的新代码:
for(var i=0;i<totalGraphs;i++){
jQuery.ajax({
type: 'POST',
url: graphUrl,
data: { kpiId: kpiIds[i], divId: (i+1) },
async: true, //if false things are working fine
cache:false,
success: function(response){
document.getDocumentById("graph" + response.count).innerHTML("hello");
},
error:function(XMLHttpRequest,textStatus,errorThrown){}
});
}
for(var i=0;i首先,您正在循环中运行ajax调用。如果您关闭了异步,这将是正常的。但是由于您打开了异步,循环不会等待ajax完成其工作
最好的做法是使用内循环ajax将值获取到全局变量,然后稍后使用该变量绘制图形。试试这个
for (var i = 0; i < totalGraphs; i++){
(function ajaxCall(index) {
var kpiId = kpiIds[index];
jQuery.ajax({
type: "POST",
url: graphUrl,
data: {
kpiId : kpiId,
divId : index + 1
},
async: true, //if false things are working fine
cache: false,
success: function(response) {
document.getDocumentById("graph" + (index + 1)).innerHTML("hello");
},
error: function(XMLHttpRequest,textStatus,errorThrown) {}
});
})(i);
}
for(var i=0;i
我将ajax调用包装在一个匿名函数中,这样相对于ajax调用,I
的值就永远不会改变。不会将hello放在我的graphX div中,也不会只放在最后一个div中。totalGraphs
的值是多少?我想,如果你非常快地发送了很多请求,服务器可能会被阻塞ng任何对您的响应。数据
应该是对象,而不是字符串。@RTotalGraph不仅仅在bw 4中-6@Archer不正确,您可以将数据作为字符串发送。嘿,它起作用了,但为什么起作用呢?我将接受这个答案。我对它做了一些细微的修改,这将有助于更好地解释(我发现这个概念很难用语言表达).在循环中,我创建了一个立即调用的函数,将I
作为参数index
传入。然后在该函数中使用该参数来代替I
。由于index
的值是一个局部变量,它永远不会更改。-请阅读该参数,看看它是否有助于解释:)