Javascript jquery ajax成功结果为空
我正在使用jquery进行ajax调用,以获取json格式的数据。调用了成功回调函数,但数据为空Javascript jquery ajax成功结果为空,javascript,jquery,odata,Javascript,Jquery,Odata,我正在使用jquery进行ajax调用,以获取json格式的数据。调用了成功回调函数,但数据为空 $(document).ready(function () { $.ajax({ url: "http://apps.sungardhe.com/StudentResearch/public/Research.svc/Schools", type: "GET", contentType: "application/json; charset=u
$(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>");
}
}
$(文档).ready(函数(){
$.ajax({
url:“http://apps.sungardhe.com/StudentResearch/public/Research.svc/Schools",
键入:“获取”,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:CBS学校
});
});
函数CBS学校(数据){
如果(数据==null){
警报(“数据为空”);
返回;
}
用于(数据中的var学校){
$(“#ddSchool”).append(“+data[school].ShortName+”);
}
}
使用fiddler,我看到响应实际上返回json数据,但由于某种原因,jquery结果对象为null。有人能告诉我为什么吗?试试这个
if (data.d == null) {
alert("data.d is null");
return;
}
由于返回的数据类型是json,因此数据位于响应对象中的数据“d”变量中。您被阻止跨域XMLHttpRequests的阻止。由于您需要设置头来从.NETWeb服务获取JSON,因此您处于一个困难的位置,您不能从浏览器发出此类请求,而不能从其他域发出此类请求
Fiddler可能正在显示内容,但浏览器不会让页面看到它,出于安全原因,它将始终为空。解决这个问题的一种方法是,但不幸的是,这项服务似乎并不是为了支持它而设置的。我相信你可以让你的电话变得通用(正如marduk指出的原因) 为了处理这个问题,并使调用通用(适用于data和data.d),我在ajax调用(适用于我的asp.net内容)中使用了以下内容,以便它适用于较旧和较新的服务:
dataFilter: function(data)
{
var msg;
if (typeof (JSON) !== 'undefined' &&
typeof (JSON.parse) === 'function')
msg = JSON.parse(data);
else
msg = eval('(' + data + ')');
if (msg.hasOwnProperty('d'))
return msg.d;
else
return msg;
},
编辑:如果它确实为空且不是“未定义的”,那么跨域问题可能在这里起作用。如果
数据已经为空,它怎么会有属性?:)这只会在if()
语句本身上抛出一个错误。如果您尝试访问data.d,您会得到javascript错误“data is null”,无需自己处理,除了.d
之外,这已经完成了。当获取JSON jQuery时,它已经检查了浏览器功能(如JSON.parse()
),并检查了它的有效性等,请在这里亲自查看: