私は非同期呼び出しを行う関数を持っています&は成功時に無名関数を呼び出します。data
無名関数のパラメータはサーバからの応答を収集するために使用されますが、 paramとして渡されない限り、内部関数。内部関数を渡さずに外部関数のパラメータにアクセスする
callService('POST', getDataInfo, detailData, function (data) {
formDisplayGrid('.accruedGrid', '.accruedTable', 'Total Accrued');//doesn't work.
formDisplayGrid(data,'.accruedGrid', '.accruedTable', 'Total Accrued'); //works
});
は、単に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
関数の内部で実行された場合、それが利用されているはずですので、これが起こっているということですか?
また、フォームの表示グリッド関数のコードを共有してください – orangespark
@orangespark updated –
私はあなたの関数をモジュール化し、それらを切り離すので、引数としてデータを渡すアプローチが良いと思います。純粋な関数を書く方が良い方法です。 – orangespark