我試圖從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」在狀態
我怎樣才能解決這個問題?
會發生什麼如果您跳過ajax調用,並試圖在固定字符串上調用$ .parseJSON?換句話說,複製結果,修復「117」問題並查看是否解決了分析錯誤。這會告訴你,如果這是問題。 – davidethell