JSON获得结果null

时间:2011-11-30 12:11:49

标签: javascript jquery json

我正在使用带有jQuery的HTML5开发应用程序,我正在使用Sync Framework进行同步,并且它在云中使用服务(Windows Azure)。

问题是当我将Request帧发送到服务时:

$.ajax({
        dataType: "json",
        Accept: 'application / json',
        url: serviceUri,
        crossDomain: true,
        success: function (json) {
            console.log(" reponse :" + json);

        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            console.log("error :" + XMLHttpRequest.responseText);
        }
    });

请求框架是:

  

GET http://157.56.8.203/DefaultScopeSyncService.svc/defaultscope / DownloadChanges?id = 7AE7C771-0A98-4A5D-A046-430DDB0A7917 HTTP / 1.1   主持人:157.56.8.203   User-Agent:Mozilla / 5.0(Windows NT 6.1; WOW64; rv:8.0)Gecko / 20100101 Firefox / 8.0   接受:application / json,text / javascript, /   Accept-Language:en-us,en; q = 0.5   Accept-Encoding:gzip,deflate   Accept-Charset:ISO-8859-1,utf-8; q = 0.7,*; q = 0.7   连接:保持活力   Referer:htp:// localhost:49427 / ListSample.htm   来源:htp:// localhost:49427

回复是:

  

HTTP / 1.1 200好的   内容长度:1388   Content-Type:application / json   服务器:Microsoft-IIS / 7.0   SyncServiceVersion:1.0   X-Powered-By:ASP.NET   日期:2011年11月30日星期三,格林威治标准时间11:55:25

     

{ “d”:{ “_ 同步”:{ “moreChangesAvailable”:假 “serverBlob”:“AAEAAAD ///// AQAAAAAAAAAMAgAAAGVNaWNyb3NvZnQuU3luY2hyb25pemF0aW9uLlNlcnZpY2VzLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49ODk4NDVkY2Q4MDgwY2M5MQUBAAAAK01pY3Jvc29mdC5TeW5jaHJvbml6YXRpb24uU2VydmljZXMuU3luY0Jsb2IFAAAAIDxDbGllbnRLbm93bGVkZ2U + a19fQmFja2luZ0ZpZWxkIDxDbGllbnRTY29wZU5hbWU + a19fQmFja2luZ0ZpZWxkHDxJc0xhc3RCYXRjaD5rX19CYWNraW5nRmllbGQaPEJhdGNoQ29kZT5rX19CYWNraW5nRmllbGQaPE5leHRCYXRjaD5rX19CYWNraW5nRmllbGQHAQADAwIBbVN5c3RlbS5OdWxsYWJsZWAxW1tTeXN0ZW0uR3VpZCwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1tU3lzdGVtLk51bGxhYmxlYDFbW1N5c3RlbS5HdWlkLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQIAAAAJAwAAAAYEAAAAJDhhMzZhNGYyLTg5ZjQtNDJkMi1iNDhmLTJiNWM4ZDc5ZGE4OQEKCg8DAAAAkAAAAAIAAAAFAAAAAAAAAAEAAAAAAAAABQAAEAAAAAKKNqTyifRC0rSPK1yNedqJ6MOD + NOvRl6RwtFgNGnbbgAAABgAABABKAIAAAEAAAAVAAAAAgAAAAE AAAAAAAAAAQAAAAEAAAABAAAAAAAAAQ8AAAAXAAAAAQAAABYAAAABAAMAAAAAAQAAAAAAAAAZAQAAAAAL “},” 结果 “:[{” ID “:” 7ae7c771-0a98-4a5d-a046-430ddb0a7917" , “姓名”: “圣地亚哥”, “姓”: “Dalto”, “出生日期”:“/日期( 917913600000)/ “ ”性别“: ”M“, ” _metadata“:{ ”URI“:” http://157.56.8.203/DefaultScopeSyncService.svc/Persons(Id=guid'7ae7c771-0a98-4a5d -a046-430ddb0a7917' )”, “类型”: “DefaultScope.Persons”}}]}}

脚本中的“data”对象始终为null,但是回复帧具有正确的数据。 有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:0)

您必须使用此代码编写调用函数,如果响应具有多个对象,则可以使用 json.d.results 来获取响应数据,如果您将获得单个对象而不是达到它们使用 json.d [0]

$.ajax({
    dataType: "json",
    Accept: 'application / json',
    url: serviceUri,
    crossDomain: true,
    success: function (json) {
    if (json.d.results == undefined) 
    {
        // to do
    }
    else {  
       console.log(" response :" + json.d.results);
    }

    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
        console.log("error :" + XMLHttpRequest.responseText);
    }
});

最诚挚的问候。

答案 1 :(得分:0)

跨域请求不允许在所有现代浏览器中使用它们并不好。在任何情况下,如果您想要接收数据,您需要像服务器一样使用您的服务器,因此它将如下工作:

  1. 您实现从服务器(您的服务器)到另一台服务器的请求
  2. 您呼叫您的服务器请求,而不是其他(跨域服务器)
  3. 其他方式是哼唱。 即你可以使用这个链接(但我不建议)http://james.padolsey.com/javascript/cross-domain-requests-with-jquery/