2015-06-17 48 views
0

這讓我瘋狂。這是我想要做的;Jquery:將來自AJAX帖子的回覆插入正確的div

對於我的頁面上每個具有'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」。發生的事情是,在接收到來自第一個Ajax請求的響應之前,.each()循環正在更新變量「guid」。因此,當第一個ajax響應到達時,「guid」的值是指第二個div的id,所以第二個div用得到第一個div的數據更新。

我有這個太通過設置

$.ajaxSetup({async: false}); 

工作,但是,當然,這降低迫使他們等待,而所有的請求發出和收到的答覆用戶體驗。

任何幫助感激地收到!正如您可能已經猜到的那樣,JavaScript不是我的強項。

回答

2

您需要使​​爲局部變量,以便在每個閉包中保存一個不同的變量。

var guid = this.id; 
+0

謝謝 - 簡單的,當你知道如何! –