[英]Callback inside AJAX success
我試圖在AJAX成功執行過程中添加一個可選的回調,但是我似乎無法讓該回調在需要時運行。
這是我的AJAX代碼示例
function someAjaxFunction(hosturl, callback){
$.ajax({
type: "GET",
url: hosturl,
data: {'something': 'code' },
dataType: 'json',
success: function(html){
var arr = $.map(html, function(val) { return val; });
if(arr[0] != 'false'){
console.log('1');
console.log('2');
if (callback) {
console.log('calling the callback')
callback();
}
console.log('3');
}else{
console.log('fail')
}
}
});
}
這是如何執行AJAX的回調和示例
function thisIsACallBack(){
console.log("i'm a callback");
}
someAjaxFunction("some url", thisIsACallBack);
如果運行此代碼,則控制台輸出。
1
2
3
i'm a callback
我什至可以一起刪除回調if條件,我仍然會得到相同的輸出。
這也是處理我的Ajax返回的更好的方法,當前我的響應包裝在json對象中。 如果數據庫找不到對象,那么我必須在數組中放置“ false”並將其轉換為json對象,然后再將其回傳給ajax。
因為您必須將回調作為字符串傳遞給函數
someAjaxFunction("some url", thisIsACallBack); // <-- Wrong thisIsACallBack will be triggered after someAjaxFunction as some separate function call
像這樣
someAjaxFunction("some url", "thisIsACallBack()"); // <- Correct way
// Then call eval( callback ); inside Ajax success
....
success: function(html){
...
eval( callback );
}
您的問題是,在此代碼的情況下someAjaxFunction("some url", thisIsACallBack);
它在您編寫someAjaxFunction
名稱而不是字符串時觸發了someAjaxFunction
然后是thisIsACallBack
函數
更新
如果您必須將參數傳遞給回調,則可以選擇
someAjaxFunction("some url", function(param1){
thisIsACallBack(param1)
); } );
...
success: function(html){
...
callback( yourArray );
}
JavaScript有多種方式可以傳遞回調取決於您的需要
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.