Geobytesからデータを取得しようとしています。テンプレートの1つがJSONを返し、クロスドメインアクセスする必要があります。
私はこれらの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ですが、
警告:リソースはスクリプトとして解釈されますが、MIMEタイプtext / htmlで転送されます: "http://www.geobytes.com/IpLocator.htm?GetLocation&template=json.txt&callback=jsonpcallback&{%22ipaddress%22:%22200.167.254.166%22} &_ = 1353148931121"
リモートIpLocator.htmのエラー:キャッチされていないSyntaxError:予期しないトークン:
エラーはで返されたデータにスローされます
{"geobytes":{"countryid":117,
「117」ではなく117であるためかと思いますが、返されるデータを制御できないことは明らかです。「processData=false」を追加しようとしましたが、役に立ちませんでした。
エラー処理をajaxに追加し、ステータスで「parsererror」を取得しました
どうすればこれを修正できますか?