我的JSON存在问题。我相信,我们从SOAP服务获得它。我正在使用jQuery AJAX来尝试使用JSON。我们正在使用Asp.NET解决方案,所以我知道“d”安全功能,并在我的dataFilter中尝试解决这个问题。我在Firebug中获取JSON但不是我的本地机器。该服务位于与本地计算机不同的域中。我知道跨域策略问题,但是当我在jQuery AJAX调用中将dataType作为“jsonp”时,似乎消耗了Firebug中的JSON。 如果我将我的dataType设置为“json”,我在Firebug中什么也得不到。
事情是我的JSON中有“斜线”。我猜这就是Firebug给我一个“无效标签”错误的原因。但我不确定。
我的jQuery Ajax调用如下。
$(document).ready(function () {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
async: false,
url: "http://www.myexternaldomain.com/jservice/myservice.svc/CurrentJsonDataFullWeatherPanel",
data: "{}",
dataType: "jsonp",
dataFilter: function(data) {
// This boils the response string down
// into a proper JavaScript Object().
var msg = eval('(' + data + ')');
if (msg.hasOwnProperty('d'))
return msg.d;
else
return msg;
},
success: function(msg) {
// This will now output the same thing
// across any current version of .NET.
alert(msg);
},
error: function (result) {
alert('Failed: ' + result.status + ' ' + result.statusText);
}
});
});
Firebug中的我的JSON输出显示如下。 { “d”: “[{\” AirTemperature \ “:\” 57.3 \”,\ “BarometricPressure \”:\ “30.08 \”,\ “CurrentRainRate \”:\ “\” \ “DewPointTemperature \”:\ “30.7 \”,\“HeatIndex \”:\“57.3 \”,\“HourlyRainAmount \”:\“0.00 \”,\“LocalObservationTime \”:\“10/14/2011 11:16:07 AM \” ,\ “MonthlyRainAmount \”:\ “\” \ “相对湿度\”:\ “36 \”,\ “SnowDepth \”:\ “0.0 \”,\ “SolarRadiation \”:\ “\” \“日出\“:\”7:09 AM \“,\”SunSet \“:\”6:22 PM \“,\”TodayRainAmount \“:\”0.00 \“,\”Visibility \“:\”6561 \“ ,\ “Windchill的\”:\ “57.3 \”,\ “WindDirection \”:\ “2 \” \ “WindGust \”:\ “11.4 \”,\ “WindGustDirection \”:\ “92 \”,\ “WindSpeed \”:\“4.9 \”,\“YearlyRainAmount \”:\“22.24 \”,\“StationTime \”:\“10/14/2011 11:15:24 AM \”}]“}
有什么建议吗? 我是否需要使用与jQuery不同的方式来使用我的JSON?
我应该补充一点,我的失败警报发回200次成功,但遇到了错误。
非常感谢帮助。提前谢谢。
答案 0 :(得分:0)
将eval('(' + data + ')');
替换为$.parseJSON(data)