AJAX 函數未傳回變數
將框架分割為多個檔案時,可能會遇到變數未傳回的問題來自AJAX 函數。雖然變數在 JS 檔案中不為空,但在主執行中顯示為空。
原始函數模式:
var lock_get = 0; function get_data(data, destination) { if (lock_get == 0) { lock_get = 1; $.ajax({ type: "POST", url: destination, async: true, data: data, success: function(data) { lock_get = 0; if (data) { return data; } } }); } };
執行:
var test = get_data(data, destination); notice(test);
在原始函數中,getdata_data 執行傳回AJAX 調用,但由於AJAX 的非同步特性而失敗。
解決方案:使用回呼
要解決此問題,您可以使用回呼。透過將回呼函數傳遞給 get_data,可以處理並傳回結果:
function get_data(data, destination, callback) { if (lock_get == 0) { lock_get = 1; $.ajax({ type: "POST", url: destination, async: true, data: data, success: function(data) { lock_get = 0; if (data && callback) { callback(data); } } }); } };
執行(帶回調):
get_data(data, destination, function(test) { notice(test); });
以上是為什麼我的 AJAX 函數不傳回變量,如何使用回調修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!