[英]How to call a success function with a variable in $.ajax call
在 Javascript 中,我將如何使這樣的工作:
function callAjax (url, successCallback, errorCallback) { var ajaxProps = { url: url, success: successCallback, error: errorCallback } return $.ajax(ajaxProps); }
無論我如何嘗試,我都會收到錯誤或未定義的錯誤。 我試圖慢慢地從一個上帝的對象中解脫出來。 所以通常 ajax 調用將是 parent.specificSuccess,因為它來自該對象內。 我也試過使用 GodObject[successCallback] 和 global[namespace].godObject[successCallback]。 我還嘗試了所有三種變體:
function callAjax (url, successCallback, errorCallback) { var ajaxProps = { url: url, success: function (response) { successCallback(response); }, error: function (response) { errorCallback(response); } } return $.ajax(ajaxProps); }
它是從 God 對象內部調用的:
callAjax('https://url.com', specificSuccess, specificError);
我已經嘗試了上面列出的所有三個選項,並在它前面使用了“父”。
我知道我一定遺漏了一些東西,我以前從未遇到過被要求做這樣的事情的實例。 似乎我應該能夠使用帶有方法名稱的變量在回調中調用一個方法……但是谷歌在這方面讓我失望了。
我有一個例子。 它非常適合我。 您可以將此代碼保存為 .js 文件並在您的網頁中引用。 你像這樣調用ajax方法:backend.ajax.AjaxPOST()傳遞參數。 可選地,您可以有一個加載。
backend.ajax = {
AjaxPOST: function (url, data, dataType, callBackSucess, callBackError, loadig) {
$.ajax({
type: "POST",
url: url,
data: data,
dataType: dataType,
success: function (e) {
if (callBackSucess != null)
callBackSucess(e);
},
beforeSend: function (e) {
if (loadig == true)
startLoadingAjax();
},
complete: function (e) {
if (loadig == true)
endLoadingAjax();
}
});
},
AjaxGET: function (url, dataType, callBackSucess, callBackError, loadig) {
$.ajax({
type: "GET",
url: url,
dataType: dataType,
success: function (e) {
if (callBackSucess != null)
callBackSucess(e);
},
error: function (e) {
if (callBackError != null)
callBackError(e);
},
beforeSend: function (e) {
if (loadig == true)
startLoadingAjax();
},
complete: function (e) {
if (loadig == true)
endLoadingAjax();
}
});
}};
var divLoading = "<div id=\"Loading\" style=\"display: none; position: fixed; z-index: 1000; top: 0;left: 0; height: 100%;width: 100%;background: rgba( 255, 255, 255, .8 ) url('http://i.stack.imgur.com/FhHRx.gif') 50% 50% no-repeat;display:block;\"></div>";
function startLoadingAjax() {
$("body").append(divLoading);}
function endLoadingAjax() {
$("#Loading").remove();}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.