2

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 );
  };
});      
4

1 に答える 1

0

答えは別のstackoverflowの質問にありました: JSONPを使用して起動しないJquery成功関数

「...後から考えると、解決策は以前よりも明白だったはずですが、Web応答を応答ストリームに直接書き込む必要があります。JSONの文字列を返すだけではうまくいきません。誰かがそれを構築し、それをストリーミングバックします。

于 2012-07-15T23:22:43.523 に答える