是的,這是可能的。查詢是否必須連續執行?如果不是,則可以並行運行所有查詢。
每個AJAX調用都可以在成功完成後調用一個函數。當每個AJAX調用完成時,通過在該代碼底部的後續AJAX調用指定返回數據格式和表示代碼函數。
以下代碼示例是一個廣義的jQuery AJAX數據庫調用,可用於串行執行任意數量的數據庫調用。它假設數據庫有一個HTTP POST API,它用JSON響應,因爲你沒有指定數據庫使用的數據訪問方法。
myfunction參數指定將在數據庫響應後調用的函數。 myerrorfunction參數指定錯誤處理程序。 myquery參數指定API調用。 myparams參數是要提供給HTTP POST作爲URL中參數的任意數量的逗號分隔參數的列表。他們的格式爲& P0 = .. & PN =
function apitofunction6(myfunction,myerrorfunction,myquery,myparams) {
var datstr = "";
var indx = 0;
var ajaxHandle;
if (myparams != null) {
for (indx = 0; indx < (arguments.length-3); indx++) {
datstr = datstr + "&p" + indx + "=" + encodeURIComponent(arguments[indx+3]);
}
}
ajaxHandle = $.ajax({
type: "POST",
url: "aqapi",
data: "howsmyapiq=" + myquery + datstr,
dataType: "json",
tryCount: 0,
retryLimit: 3,
complete: function sortdata() {},
success: function(myJSON,textStatus,jqXHR) {
myfunction(myJSON,textStatus,jqXHR);
},
error: function(jqXHR, textStatus, errorThrown) {
if (textStatus == 'timeout') {
this.tryCount++;
if (this.tryCount <= this.retryLimit) {
var retryHandle = $.ajax(this);
pendingFunction.push(retryHandle);
return retryHandle;
}
}
if (errorThrown == 'Authorization Required') {
window.location = "/login";
}
myerrorfunction(jqXHR, textStatus, errorThrown);
}
});
pendingFunction.push(ajaxHandle);
return ajaxHandle;
}
該功能可以在一個序列中這樣調用:
arResultIndex = apitofunction6(pc_myOnGet,pc_myOnFail,"ShowIncident3",SortOrder,Count,Offset);
function pc_myOnGet (myData,myTS,myJqXHR,datstr,myparams) {
//format and display data
//...
arResultIndex2 = apitofunction6(pc_myOnGet2,pc_myOnFail2,"ShowIncident4",SortOrder,Count,Offset);
}
function pc_myOnGet2 (myData,myTS,myJqXHR,datstr,myparams) {
//format and display data
//...
arResultIndex3 = apitofunction6(pc_myOnGet3,pc_myOnFail3,"ShowIncident5",SortOrder,Count,Offset);
}
感謝。我正在使用Windows窗體而不是mvc。我認爲這仍然是可能的? – w0051977
啊,我錯過了!不確定webforms如何/如果使用partials。 –