2016-07-25 24 views
0

我的html頁面中有5個選擇列表。所有的選擇列表都會使用來自ajax調用的json響應動態填充。在ajax成功函數中,我需要爲每個選擇列表設置一個值。如何等待,直到jQuery中的選擇列表值發生變化

但是選擇列表的改變值對於不同的選擇列表在不同的時間隨機地失敗。我嘗試了幾種方法,我發現jQuery正在執行下一行,當它需要時間來更改值並且永遠不會去往以前。我嘗試了change()函數,ready()函數,load()函數等,但沒有成功。我需要等到之前的選擇列表值發生變化。我怎樣才能做到這一點。這裏是我的示例代碼。

var jsonParam = ''; 
    var serviceURL = "./someurl"; 
    AjaxManager.SendJson(serviceURL, jsonParam, onSuccess, onFailed); 
    function onSuccess(jsonData) { 
     $('#cmb1').val(jsonData.Field1); 
     $('#cmb2').val(jsonData.Field2); 
     $('#cmb3').val(jsonData.Field3); 
     $('#cmb4').val(jsonData.Field4); 
     $('#cmb5').val(jsonData.Field5); 
    } 
+0

你可以用'.then()'方式鏈接你的方法。 https(https://api.jquery.com/deferred.then/) – vaso123

+0

$('#cmb1').val(jsonData.Field1).then(function(){$('#cmb2').val(jsonData.Field2) ;})。這條路? –

+0

這是什麼AjaxManager。它是一些ASP.Net的東西?或者它是一個純粹的jQuery?我搜索了這一點,並沒有發現任何與JavaScript。 – vaso123

回答

0

我想你在找什麼是.then(),答案可能是在這裏: jQuery deferreds and promises - .then() vs .done()

祝你好運:)

+0

當我使用.then或.done它說控制檯錯誤:Uncaught TypeError:$(...)。val(...)。然後不是一個函數 –

+0

我認爲你使用它錯了。看看這裏:http://api.jquery.com/deferred.then/ –

+0

Deferred.then通常與ajax調用一起工作。但不需要鏈接ajax調用。我只有一個ajax調用,並且在成功函數中,我需要鏈接下拉列表更改事件。它應該在更改之前更改值。目前它正在隨機變化。請幫我解決它 –

0

我不知道,這是什麼東西AjaxManager。在jQuery中,你可以使用deferred.then(),你可以鏈接這些。

所以你的腳本應該是這樣的:

var jsonParam = ''; 
var serviceURL = "./someurl"; 
$.get(serviceURL, jsonParam, function (jsonData) { 
    $('#cmb1').val(jsonData.Field1); 
}).then(function() { 
    $('#cmb2').val(jsonData.Field2); 
}).then(function() { 
    $('#cmb3').val(jsonData.Field3); 
}).then(function() { 
    $('#cmb4').val(jsonData.Field4); 
}).then(function() { 
    $('#cmb5').val(jsonData.Field5); 
}).fail(function { 
    //Here comes to fail 
}); 

請注意,我用的$.get方法。如果您需要通過post將參數傳遞給ajax,那麼只需將$.get更改爲$.post

就是這樣。當$.get獲得響應時,響應將位於您的jsonData變量中,並更新#cmb1值,然後更新第二個值,依此類推。最後,如果您的ajax呼叫失敗,請致電fail方法。

編輯

正如你所說,你會得到錯誤:

Uncaught TypeError: $(...).val(...).then is not a function

你有沒有導入頁面上的jQuery庫?

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
+0

當我使用。然後它說控制檯錯誤:Uncaught TypeError:$(...)。val(...)。然後不是一個函數 - –

+0

請參閱我的編輯答案編輯部分。 – vaso123

+0

是的jQuery庫導入到我的頁面。並且仍然在瀏覽器控制檯中顯示相同的錯誤。 –

相關問題