Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ajax异步响应未加载到div中_Javascript_Jquery_Ajax_Asynchronous - Fatal编程技术网

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
的值是一个局部变量,它永远不会更改。-请阅读该参数,看看它是否有助于解释:)