2011-11-30 103 views
1

我正在开发一个使用HTML5与jQuery的应用程序,并且我正在使用Sync Framework进行同步,并使用云中的服务(Windows Azure)。JSON获得结果null

问题是,当我发送请求帧到服务:

$.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火狐/ 8.0 接受:应用/ JSON,文本/ JavaScript的,/Accept-Language:zh-cn,en; q = 0.5 Accept-Encoding:gzip,deflate Accept-Charset:ISO-8859-1,utf-8; q = 0.7,*; q = 0.7 Connection:keep -alive 的Referer:HTP://本地主机:49427/ListSample.htm 产地:HTP://本地主机:49427

和答复是:

HTTP/1.1 200 OK 内容 - 长度:1388 内容类型:application/json 服务器:Microsoft-IIS/7.0 同步ServiceVersion:1.0 X供电,通过:ASP.NET 日期:星期三,2011 11月30日11时55分25秒GMT

{ “d”:{ “_ 同步”:{ “moreChangesAvailable”:假的, “serverBlob”:“AAEAAAD ///// AQAAAAAAAAAMAgAAAGVNaWNyb3NvZnQuU3luY2hyb25pemF0aW9uLlNlcnZpY2VzLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49ODk4NDVkY2Q4MDgwY2M5MQUBAAAAK01pY3Jvc29mdC5TeW5jaHJvbml6YXRpb24uU2VydmljZXMuU3luY0Jsb2IFAAAAIDxDbGllbnRLbm93bGVkZ2U + a19fQmFja2luZ0ZpZWxkIDxDbGllbnRTY29wZU5hbWU + a19fQmFja2luZ0ZpZWxkHDxJc0xhc3RCYXRjaD5rX19CYWNraW5nRmllbGQaPEJhdGNoQ29kZT5rX19CYWNraW5nRmllbGQaPE5leHRCYXRjaD5rX19CYWNraW5nRmllbGQHAQADAwIBbVN5c3RlbS5OdWxsYWJsZWAxW1tTeXN0ZW0uR3VpZCwgbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV1tU3lzdGVtLk51bGxhYmxlYDFbW1N5c3RlbS5HdWlkLCBtc2NvcmxpYiwgV mVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQIAAAAJAwAAAAYEAAAAJDhhMzZhNGYyLTg5ZjQtNDJkMi1iNDhmLTJiNWM4ZDc5ZGE4OQEKCg8DAAAAkAAAAAIAAAAFAAAAAAAAAAEAAAAAAAAABQAAEAAAAAKKNqTyifRC0rSPK1yNedqJ6MOD + NOvRl6RwtFgNGnbbgAAABgAABABKAIAAAEAAAAVAAAAAgAAAAEAAAAAAAAAAQAAAAEAAAABAAAAAAAAAQ8AAAAXAAAAAQAAABYAAAABAAMAAAAAAQAAAAAAAAAZAQAAAAAL “},” 结果 “:[{” 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’}}]}}

‘数据’对象在脚本总是空的,但应答帧具有正确的数据。 有人能帮助我吗?

+0

你的json函数在哪里?又名你期望你的回应是什么? –

+2

脚本中的数据对象?你能澄清一下吗?答案是否正确,你是否找不到合适的方法来提取答案? –

+1

为什么不使用Fiddler或任何这样的工具来捕获格式化的JSON请求和响应。其他人很容易理解 –

回答

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); 
    } 
}); 

最好的问候。

0

跨域请求不允许在所有现代浏览器中使用它们,并且不好使用它们。在任何情况下,如果你希望收到你的数据,你需要用户服务器像代理,所以它的工作是这样的:

  1. 您实现从服务器(服务器的权限)的请求到另一台服务器
  2. 你叫请求到您的服务器,而不是另一个(跨域服务器)

其他方法是hucking。 也就是说你可以使用这个链接(但我不建议它)http://james.padolsey.com/javascript/cross-domain-requests-with-jquery/