0

呼び出しは次のようになります

$.ajax({
  url: url,
  crossDomain: true,
  dataType: 'jsonp',
  success: function(){console.log('success');}
})

サーバーコードから、それはそのようなものです

string data = callback + "(" jsonData + ")";
send("application/javascript",data);

jsonData は有効であり、私はそれを確信しています。オンラインの多くのjsonバリデーターでテストしました。サーバーコードで content-type を application/javascript から application/json に切り替えてみましたが、違いはありません。

これを機能させる唯一の方法は、jquery に送信されたコールバック関数をオーバーライドし、jquery 成功関数を呼び出す代わりに、独自のグローバル関数を呼び出すようにすることです。そして、これがその回避策のコードです

$.ajax({
   url: url,
   crossDomain: true,
   dataType: "jsonp",
   jsonpCallback: "onMyDataReceived"       
 })

  function onMyDataReceived(jsonData){  doStuff(jsonData ); }

しかし、これは $.ajax.sucess 関数から自然に流れさせるのではなく、ハックのように感じます。最初のコード スニペットがエラーになる理由について何か助けはありますか?

4

1 に答える 1

0

最初のスニペットが機能しなかった理由はよくわかりませんが、次のことを試してみてください

$.getJSON(url+"&callback=?",function(data){ console.log(data);})

私の場合はうまくいきました。

于 2012-11-13T00:50:47.833 に答える