[英]Is there an alternative to async:false in Jquery?
我不贊成在主線程上使用Synchronous XMLHttpRequest,因為它對最終用戶的體驗有不利影響。 我已經看過這篇文章,但找不到適合我需要的任何內容。
$(docucment).ready(function(){
var obj=AppendFileList(10);
$.each(obj.Table, function (key, value) {
//some code to do some task
});
});
function AppendFileList(lotid) {
$.ajax({
type: "POST",
url: "XYZ/GetAttachements",
data: JSON.stringify({ LotId: lotid, GUID: $('#hidnuniqueid').val() }), // LotId: arr1[1],
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success: function (data, status) {
var obj = jQuery.parseJSON(data.d);
console.log(obj);
return obj;
},
failure: function (data) {
console.log(data);
},
error: function (data) {
console.log(data);
console.log(data.Message);
}
});
}
我不想像我的示例所示將ajax()方法放在單獨的函數中,這樣我就不必一次又一次編寫ajax調用。 這可能嗎?
依賴於AJAX請求結果的所有邏輯都應放入success
回調中。 為此,您可以將匿名函數傳遞給AppendFileList()
函數。 嘗試這個:
$(document).ready(function(){
AppendFileList(10, function(data) { // data = the JSON retrieved
$.each(obj.Table, function (key, value) {
// some code to do some task
});
});
});
function AppendFileList(lotid, callbackFn) {
$.ajax({
type: "POST",
url: "XYZ/GetAttachements",
data: {
LotId: lotid,
GUID: $('#hidnuniqueid').val()
},
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data, status) {
callbackFn(data); // use your callback here, passing it the retrieved data
},
error: function (data) {
console.log(data);
console.log(data.Message);
}
});
}
請注意,您不需要使用JSON.stringify
發送data
或反序列化響應,因為jQuery會自動為您執行此操作,並且$.ajax()
方法在其設置中沒有failure
屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.