我正在使用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函数与success函数中的代码相同。基于堆栈溢出的其他答案,我已经尝试了各种调整。似乎没有用。
谢谢, 迈克
答案 0 :(得分:0)
根据文档对jsonp的说法,不确定为什么会这样做,但是当我取出jsonp
选项时,以下工作正常。当选项出现时,它不会出现:
var URL = "http://www.geonames.org/postalCodeLookupJSON" +
"?postalcode=10504&country=US";
function alertResponse(data, status) {
console.log(data); return JSON.stringify(data);
}
$.ajax({
url: URL, crossDomain:true,
dataType: 'jsonp',
jsonpCallback: 'alertResponse',
}).done(function(data){console.log(data)});