我正在使用 knockout.js 结合 jQuery ajax 调用将数据绑定到返回 JSON 以获取数据的 restful 服务。我对此进行了各种尝试,但似乎无法正确理解调用的语法。当我触发回调时,数据为空。在 fiddler 中,JSON 数据通过并且数据在 jsonlint.com 上验证就好了。我在错误处理程序中获得 200 状态以及 parseerror,而 errorThrown 包含“未调用 parseAcademicSessions”。
这是我进行 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 函数与成功函数中的代码相同。我在堆栈溢出时根据此处的其他答案尝试了各种调整。似乎没有一个工作。
谢谢,迈克