我试图从Geobytes获取数据。其中一个模板返回JSON,我需要跨域访问它。使用AJAX使用AJAX跨域数据
我写这2个功能
function getCountry(ip) {
var surl = "http://www.geobytes.com/IpLocator.htm?GetLocation&template=json.txt";
$.ajax({
url: surl,
data: '{"ipaddress":"' + ip + '"}',
dataType: "jsonp",
processData: false,
jsonpCallback: "jsonpcallback",
error: function (xhr, status, error) {
alert(xhr.responseText);
}
});
}
function jsonpcallback(rtndata) {
alert(rtndata.message);
}
成功执行的调用,这些都是我的响应头:
HTTP/1.1 200 OK
Date: Sat, 17 Nov 2012 12:43:54 GMT
Expires: 0
Content-type: text/html
Transfer-Encoding: chunked
返回的数据是JSON,但我得到
warning: Resource interpreted as Script but transferred with MIME type text/html: "http://www.geobytes.com/IpLocator.htm?GetLocation&template=json.txt&callback=jsonpcallback&{%22ipaddress%22:%22200.167.254.166%22}&_=1353148931121"
Error on the remote IpLocator.htm: Uncaught SyntaxError: Unexpected token :
错误发生在返回的数据上
{"geobytes":{"countryid":117,
我想也许是因为它是117而不是“117”,但我显然无法控制返回的数据。试图添加“processData = false”,但没有帮助。
我已经添加了错误处理的AJAX并获得“parsererror”在状态
我怎样才能解决这个问题?
2012-11-17
kooshka
+0
会发生什么如果您跳过ajax调用,并试图在固定字符串上调用$ .parseJSON?换句话说,复制结果,修复“117”问题并查看是否解决了分析错误。这会告诉你,如果这是问题。 –