3

我在使用它运行的浏览器访问服务 url 并在这样的浏览器上显示 json 结果时遇到问题。

  /*-secure-{"statusCode":200,"errors":
  ],"isSuccessful":true,"statusReason":"OK","Envelope":
 {"Body":{"GetStoresByZipcodeResponseElement":
 {"ns1":"http:\/\/abc.com\/intg\/ws\/\/provider","status":"statusCode":"000","statusDescription":"Success"}}*/"

但是当我使用 jquery 访问该 url 时:

 $.ajax({
        url: url,
        cache: true,
        dataType: 'script',
        type: 'GET',
        async: false, // must be set to false
        success: function (data, success) {
           console.log(" success "+ JSON.stringify(success));
           console.log(" data " +JSON.stringify(data));
        },
        error :function( jqxhr, textStatus, error ) { 
        var err = textStatus + ', ' + error;
        console.log( "Request Failed: " + err);
        },

        complete: function (jqxhr, textStatus ){
        console.log( "complete: " + JSON.stringify(jqxhr)+" "+ textStatus );
        }
    });

它向我展示了萤火虫中的响应,但即使它涉及 ajax 成功功能和数据它说未定义。

用“json”更改“脚本”后返回:

Request Failed: error,
complete: {"readyState":0,"responseText":"","responseJSON":null,"status":0,"statusText":"error"} error

Firebug 中的 JSON 响应和响应选项卡视图 Firebug 中的 JSON 响应 Firebug 中的响应

任何帮助,将不胜感激。

4

1 回答 1

2

试试这些回调函数,找出什么是“数据”。

success: function(data, success) {
  console.log("success", arguments);
  console.log("data", typeof data, data); // Verify the response
},
error: function(jqxhr, textStatus, error) { 
  console.log("error", arguments);
},
complete: function(jqxhr, textStatus) {
  console.log("complete", arguments);
}

另外,为什么在调试时不禁用缓存?cache: false.

似乎您正在尝试请求一些安全的 JSON数据,因为响应不是有效的 JSON,这可能是 jQuery 无法解析它的原因。

如果有必要,可以编写一个自定义dataFilter来修剪和解析响应。

dataFilter: function(data, type) {

  if (type === 'json') {
    // TODO: Parse the custom format by removing the comments
    // and then parsing what is expected to be valid JSON.
    return $.parseJSON(data);
  }

  return data;
}

更新

您正在尝试发出跨域请求,并且应该使用JSONP,如果服务提供商支持它,因为您受到Same Origin Policy的限制。

于 2013-06-08T23:12:01.363 回答