我正在使用jquery进行ajax调用以获取json格式的数据.调用成功回调函数但数据为空.
$(document).ready(function () {
$.ajax({
url: "http://apps.sungardhe.com/StudentResearch/public/Research.svc/Schools",
type: "GET",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: cbSchools
});
});
function cbSchools(data) {
if (data == null) {
alert("data is null");
return;
}
for (var school in data) {
$("#ddSchool").append("<option value='" + data[school].ShortName + "'>" + data[school].ShortName + "</option>");
}
}
使用fiddler我看到响应实际上是返回json数据,但由于某种原因,jquery结果对象为null.谁能告诉我为什么?
解决方法:
您被same-origin policy阻止,这会阻止跨域XMLHttpRequests.由于您需要设置标头以从这样的.Net Web服务中获取JSON,因此您处于困境,您无法通过浏览器发出此类请求,而不是来自其他域.
Fiddler可能正在显示内容,但浏览器不会让页面看到它,出于安全考虑,它总是为空.解决这个问题的方法是JSONP,但不幸的是,看起来并不是说服务是为了支持它而设置的.