我有一個函數,它可以在成功時調用一個匿名函數&。匿名函數參數用於收集來自服務器的響應,但它在內部不可用內部函數除非作爲參數傳遞。不通過內部函數訪問外部函數參數
callService('POST', getDataInfo, detailData, function (data) {
formDisplayGrid('.accruedGrid', '.accruedTable', 'Total Accrued');//doesn't work.
formDisplayGrid(data,'.accruedGrid', '.accruedTable', 'Total Accrued'); //works
});
callService
只是它使用jQuery的AJAX發出呼叫的功能。
function callService(method, url, data, success) {
var ajaxObject = {
url: url,
method: method,
dataType: 'json',
success: success
}
if (method == 'POST') {
ajaxObject['data'] = data;
}
jQuery.ajax(ajaxObject);
}
formDisplayGrid
函數只是迭代數據集以形成HTML表。
function formDisplayGrid(data, modalSelector, mainGridSelector, totalLabel) {
jQuery(modalSelector).modal();
if (typeof data != 'undefined' && data.Code === 200) {
var mainGrid = jQuery(mainGridSelector);
var tbody = '';
jQuery.each(data['Data']['category'], function (k, v) {
//some code here.
jQuery.each(v['subcat'], function (k, v) {
//some code here.
});
});
//some code here.
mainGrid.find('tbody').html(tbody).fadeIn(1200);
}
}
是,因爲匿名函數在 正在執行jQuery.ajax
功能,它應該是可用的,如果匿名函數直接的callService
函數中執行,這是怎麼回事?
請分享formDisplayGrid函數代碼也 – orangespark
@orangespark更新 –
我認爲傳遞數據作爲參數的方法更好,因爲它會模塊化你的函數並將它們分離。編寫純函數是更好的方法。 – orangespark