3

jQuery/AJAX を使用してクロスドメイン リクエストを作成しようとしています。次のコードがあります。

$.ajax({
   url: "http://www.cjihrig.com/development/jsonp/jsonp.php?callback=jsonpCallback&message=Hello",
   crossDomain:true
})
.done(function( msg ) {
  alert( "Done : " + msg );
})
.fail(function( msg) {
  alert( "Fail : " + msg);
})
.always(function( msg ) {
  alert( "Always : " + msg );
});

URL http://www.cjihrig.com/development/jsonp/jsonp.php?callback=jsonpCallback&message=Helloは、直接呼び出すと JSON オブジェクトを返し、JSONP を従来の方法で (つまり、動的スクリプト タグ インジェクションを介して) 使用すると正常に動作します。

しかし、jQuery/AJAX で使用するとエラーが発生するのはなぜですか?

4

2 に答える 2

1

エラーがdataTypeに設定されておらず、jsonpのデフォルトのdataTypeを予期していないため、このコードを試してください
:(デフォルト:Intelligent Guess(xml、json、script、またはhtml))
タイプ:文字列

  $.ajax({
   url: "http://www.cjihrig.com/development/jsonp/jsonp.php?callback=jsonpCallback&message=Hello",
   dataType: 'jsonp',
   crossDomain:true,
    jsonp: false,
    success: jsonpCallback,
})
.done(function( msg ) {
  alert( "Done : " + msg );
})
.fail(function( msg) {
  alert( "Fail : " + msg);
})
.always(function( msg ) {
  alert( "Always : " + msg );
});

 function jsonpCallback(data){
        alert("jsonpCallback");
    }

デモ

于 2013-03-19T11:43:18.213 に答える
0

オプションで$.ajaxを使用します:

dataType: "jsonp"

これにより、コールバックオプションがURLに自動的に追加されます。http://api.jquery.com/jQuery.ajax/

于 2013-03-19T11:43:17.277 に答える