查询ajax调用中的解析错误

时间:2014-12-26 06:51:04

标签: jquery ajax

调用用php和ajax调用编写的web服务最终会出现错误函数

 <script>
            $(document).ready(function(){
                alert('ajax');
                $.ajax({ 
                               type: "GET",
                    dataType: "json",
                   // crossDomain: true,
                     contentType: "application/json",
                    url: "http://domain/Customer/getCountryList",
                    headers: {
                        Accept: "application/json",
                        "Access-Control-Allow-Origin": "*",
                       "Access-Control-Allow-Methods": "GET"
                   },
                   success: function(data){   
                       alert("In S"); 
                    },
                    error:function(xhr,statusText){
                    alert("In N");

                  alert('Request Status: ' + xhr.status + ' Status Text: ' + xhr.statusText + ' ' + xhr.responseText);
                   }
                })
            })

        </script>

服务文件输出

[{"responseCode":"0"},
[{"countryId":"1","countryName":"USA","isdCode":"","isActive":"\u0001"}]] 

如何解析这个输出

2 个答案:

答案 0 :(得分:0)

首先:这是响应标头而非请求标头,您只能从$.ajax()发送请求标头

headers: {
       Accept: "application/json",
       "Access-Control-Allow-Origin": "*",
       "Access-Control-Allow-Methods": "GET"
}

解析错误:

您正在尝试使用ajax访问其他域,但是在您无法使用AJAX访问响应之前,Web服务器不会提供上述标头,这称为Cross-Origin Request Blocked

  

原因跨源请求已阻止:同源策略禁止在Web服务器上读取远程资源。这可以通过将资源移动到同一域或启用CORS来解决。 http://www.w3.org/TR/cors/

如果服务器提供JSONP回调方法,您还可以访问其他服务器响应,请参阅更多详细信息click here

答案 1 :(得分:0)

如果其他一切正常的话 dataType: "json"表示您将传入的数据解析为json。

但是,由于"\u0001"字符串,您的json数据无效。

删除dataType: "json"并替换

data = data.replace("\u0001", "\\\\u0001")

然后解析为json。

DEMO