Jquery:将AJAX帖子的响应注入右侧div

时间:2015-06-17 21:00:40

标签: jquery ajax post

这让我疯了。这就是我想要做的事情;

对于我的页面上每个具有'gauge'类的DIV,我需要通过Ajax发出一个jquery Post请求,其中包含来自ViewModel的一些参数(在下面的代码片段中称为“params”)。每个div的ID都在请求中使用,因此服务器知道请求所针对的页面部分,因此可以使用正确的数据进行响应。然后,当收到响应时,将使用响应中的数据更新div。

这是jquery代码;

function updateGauges() {
    $(".gauge").each(
        function() {
            guid = this.id;
            var url = "/path/to/get_data/1/" + guid;
            $.post(url,JSON.stringify(params)).done(function(data){
                var score = data.score;

                var divToUpdate = $('#'+guid);
                divToUpdate.append(score);
            });
        }
    );
}

假设页面中有两个div,其类别为“gauge”。发生的事情是.each()循环在收到第一个ajax请求的响应之前更新变量“guid”。因此,当第一个ajax响应到来时,“guid”的值指的是第二个div的id,所以第二个div用第一个div的数据更新。

我通过设置

来完成这项工作
$.ajaxSetup({async: false});

但是,当然,这会降低用户体验,迫使他们在发出所有请求并收到回复时等待。

感激不尽的任何帮助!正如您可能已经猜到的那样,JavaScript不是我的强项。

1 个答案:

答案 0 :(得分:2)

你需要让guid成为一个局部变量,这样你就可以在每个闭包中保存一个不同的变量。

var guid = this.id;