對於我的PhoneGap /科爾多瓦項目中,我想用下面的函數來處理所有的Ajax調用:jQuery的Ajax調用變量
function requestData(action, id) {
var data = {
user_id: localStorage.getItem('user_id')
};
if(action == 'feed_load_feedings' || action == 'feed_add_load_menu_weight' || action == 'feed_add_load_menu_supps') {
data.id = id;
}
$.ajax({
type: 'post',
url: 'http://_______.com/file.php?'+action,
async: false,
crossDomain: true,
data: data,
beforeSend: showLoader,
error: handleError,
success: handleSuccess
});
}
function showLoader() {
console.log('showLoader fired')
$('body').prepend('<p id="loading">De gegevens worden geladen...</p>');
}
function handleError(data) {
console.log('handleError fired')
$('#loading').remove();
$('body').prepend('<p id="error">Fout tijdens het laden van de gegevens...</p>');
return false;
}
function handleSuccess(data) {
console.log('handleSuccess fired')
$('#loading').remove();
if(typeof data !== 'object') {
$('body').prepend('<p id="error">Fout in gegevens object...</p>');
return false;
}
else if(data.length == 0) {
return 0;
}
else {
return data;
}
}
該處理的要求,也是錯誤處理。
如果一切正常,它應該返回數據。但是使用這個:
$(function() {
var herd = requestData('herd_load_herds');
console.log(herd):
});
在控制檯中給出了這樣的:
showLoader fired
POST http://_______.com/file.php?feed_load_feedings
handleSuccess fired
undefined
在POST請求,我可以看到數據被調用,沒關係。但是它不會被放入變量中。我認爲將async: false
添加到我的ajax調用會阻止這種情況。我在監督什麼?
感謝您的努力。我試過你的代碼,但它給了我一個錯誤:'TypeError:next不是一個函數'...怎麼回事? – LinkinTED
現在試試..我編輯了我的答案 –
是的,作品像一個魅力,謝謝! – LinkinTED