JSON,无效标签,消耗JSON的问题

时间:2011-10-14 17:32:48

标签: json

我的JSON存在问题。我相信,我们从SOAP服务获得它。我正在使用jQuery AJAX来尝试使用JSON。我们正在使用Asp.NET解决方案,所以我知道“d”安全功能,并在我的dataFilter中尝试解决这个问题。我在Firebug中获取JSON但不是我的本地机器。该服务位于与本地计算机不同的域中。我知道跨域策略问题,但是当我在jQuery AJAX调用中将dataType作为“jsonp”时,似乎消耗了Firebug中的JSON。 如果我将我的dataType设置为“json”,我在Firebug中什么也得不到。

事情是我的JSON中有“斜线”。我猜这就是Firebug给我一个“无效标签”错误的原因。但我不确定。

  1. 如何在不再执行服务器端代码的情况下过滤掉“\”。
  2. 如何在我的页面上恢复JSON并发出警报。
  3. 我的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次成功,但遇到了错误。

    非常感谢帮助。提前谢谢。

1 个答案:

答案 0 :(得分:0)

eval('(' + data + ')');替换为$.parseJSON(data)

文档:http://api.jquery.com/jQuery.parseJSON/