dataType jsonpを使用してajaxでGETを実行し、所有しておらず変更できない別のドメインのサーバーから小さなxmlファイルを取り込みます。jsonp以外のdataTypeは、「OriginlocalhostはAccess-Control-Allow-Originによって許可されていません。問題ありません。
問題は、サーバーがjsonpであり、jQueryがこれを好まないようだと言ったときに、同じxml応答を返すことです。返されたデータを参照するとすぐに「UncaughtSyntaxError:Unexpected token <」エラーが発生するため、dataFilterは役に立たないようです。たぶん、dataFilter設定を使用する他の方法がありますか?
私のコードは以下に再現されています:
$(document).ready(function(){
$.ajax({
type: "GET",
url: "https://b2b.firstenergycorp.com/invoke/ ... very long url... ",
dataType: "jsonp",
dataFilter: function(data, type){
if(type == "xml") alert("returned xml!");
var newdata = data.replace(/</g, '{'); // Firebug complains about this
newdata = newdata.replace(/>/g, '}');
return newdata;
},
jsonp: "callback",
jsonpCallback: "jsonpcallback"
});
function jsonpcallback(returndata) {
alert( "data returned: " + returndata );
};
});