调用用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"}]]
如何解析这个输出
答案 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。