私はこのようなモデルを持っています
function DetailsViewModel() {
var self = this;
self.Day = ko.observable();
self.DateNumber = ko.observable();
self.Details = ko.observableArray([]);
self.LoadData = function () {
var data = { date: '2013-09-18' }
var url = "php/abc.php"
var callback = self.Result();
ajax(url , data , self.Result , type );
/*
$.ajax({
url: "/api/Timesheet/DayDetailResult",
async: false,
type: "GET",
data: ko.toJSON(data),
dataType: 'JSON',
success: function (details) {
self.DateNumber(details.DateNumber);
self.Day(details.Day);
self.Details(details.Details);
}
});
*/
};
self.AddDayDetails = function () {
window.location.href = '/Home/AddTimeSheetEntry';
}
self.Result = function (details) {
self.DateNumber(details.DateNumber);
self.Day(details.Day);
self.Details(details.Details);
}
self.LoadData();
}
そして、ここにajax関数があります
function ajax(url , data , callback , type ) {
var type = (type === undefined) ? "GET" : type;
$.ajax({
url: url,
async: false,
type: type,
data: ko.toJSON(data),
dataType: 'JSON',
success: callback(data)
});
}
問題は、self.LoadData関数内でajaxリクエストのコメントを外すと、すべて正常に機能することです。しかし、アプリケーション全体でグローバル ajax 関数を使用したいと考えています。ajaxの成功からデータを取得する必要があり、ajaxの成功から呼び出す必要があるself.Resultを定義しています。どうやってやるの。コードを実行すると、このエラーが発生します
`details is undefined`
ここで何かを実行して機能させる必要があると思いますが、方法がわかりません。
ajax(url , data , self.Result , type );
助けてください。私は Javascript の専門家ではありません。