データを取得するためにJSONを返す安らかなサービスへのjQuery ajax呼び出しと組み合わせて、knockout.jsを使用してデータをバインドしています。これについてさまざまなことを試しましたが、呼び出しの構文が正しくないようです。コールバックを起動すると、データは null です。フィドラーでは、JSON データが送信され、データは jsonlint.com で正常に検証されます。errorThrown には「parseAcademicSessions が呼び出されませんでした」が含まれていますが、エラー ハンドラーで parseerror と共に 200 ステータスを取得します。
ajax 呼び出しが行われるノックアウト ビュー モデルのコードは次のとおりです。
function HomeViewModel() {
var self = this;
self.AcademicSessions = ko.observableArray([]);
self.hello = 'Hi ...';
$.ajax({
url: 'http://localhost:51044/Rest/GetAcademicSessions',
dataType: 'jsonp',
type: 'GET',
jsonp: false,
jsonpCallback: 'parseAcademicSessions',
crossDomain: true,
success: function (data) {
$('#academicSessionsDiv').css('color', 'black');
for (var ii = 0; data && ii < data.length; ii++) {
if (data[ii].Year < 2012 || data[ii].Year > 2013) continue;
var beginDate = new Date(data[ii].BeginDate.match(/\d+/)[0] * 1);
var session = new AcademicSession(beginDate.toString("ddd MMM dd, yyyy"), data[ii].CatalogCode,
data[ii].CatalogDescription, data[ii].CatalogYear, data[ii].Description,
data[ii].SessionCode, data[ii].Year);
self.AcademicSessions.push(session);
}
},
error: function (jqXhr, status, errorThrown) {
$('#academicSessionsDiv').css('color', 'red');
$('#academicSessionsDiv').html("<table class='session-table'><tr><td>Status</td><td>"
+ status + "</td></tr><tr><td>JQXHR.Status</td><td>"
+ jqXhr.status + "</td></tr><tr><td>Error Thrown</td><td>"
+ errorThrown + "</td></tr></table>");
}
});
};
parseAcademicSessions 関数は、success 関数のコードと同じです。ここのスタックオーバーフローでの他の回答に基づいて、これについてさまざまな調整を試みました。どれも機能していないようです。
ありがとう、マイク