-1
我試圖將<textarea>
中的HTML保存爲電子郵件模板。這可以在多個地方完成,所以我想創建一個save_email_template()
函數,它可以接收參數並根據需要進行保存(我已經完成了這項工作)。爲從AJAX調用utlizies DATA參數的函數定義回調
我也想在每次調用save_email_template()
函數時指定一個回調函數。該捕獲是在我想要以各種方式處理save_email_template()
函數內的ajax調用返回的data
的回調中。
這裏是我的代碼:
function save_email_template(options,callback){
$.ajax({
type: "POST",
url: '/save_email_template.php',
data: options.params,
success:function(data) {
if (typeof callback === 'function') {
callback(data);
}
}
});
}
save_email_template({
params: {
'action':'add',
'eid':$('input#id').val(),
'title':$('input#name').val(),
'html':$('textarea#html').val()
}
}, function(data){ // <---- "Data" Not Defined
if (typeof data.html_issues !== 'undefined') {
console.log('HTML Issues:\n------------------');
console.error(data.html_issues);
}
if (typeof data.css_issues !== 'undefined') {
console.log('CSS Issues:\n------------------');
console.error(data.css_issues);
}
if (data.status == "OK") {
$('body').append(data.html);
} else {
if (typeof data.error_msg !== 'undefined')
alert(data.error_msg);
if (data.status == "ERROR")
console.error(data);
}
});
問題:
我不斷收到JS錯誤 ' 「數據」 沒有定義',其引用我的回調...此代碼function(data){...}
。 Obviosly data
尚未定義,但如何參考在AJAX調用中返回的data
?
不要將回調函數傳遞到'save_email_template()'函數中。相反,從函數返回ajax調用,並在[jqXHR](http://api.jquery.com/jQuery.ajax/#jqXHR)上寫入'.done()'或'.then()返回。 – dave
@dave TBH,回調沒有問題... DigitalMC:我不清楚這個問題,我不明白你爲什麼會得到這個錯誤。那是完整的代碼嗎? –
@dave不需要將'save_email_template()'函數放入變量來訪問返回值?我對如何設置它有點困惑。 – DigitalMC