4

私は、Web サイトにウィジェットを表示する JavaScript コードを生成するアプリに取り組んでいます。ウィジェット フォームからデータが送信されると、jQuery ajax 関数を使用してデータがサーバーにポストされます。

問題は、別のホストにある Web サイトにウィジェットを配置した場合に発生しない成功のコールバックを使用していることです。javascript がクロスドメイン ajax を防止し、jsonp を使用する必要があることはわかっていますが、データが正常にサーバーに送信される場合、成功イベントがトリガーされないのはなぜでしょうか?

コードは次のとおりです。

$.ajax({
  type: 'POST',
  url: report_url,
  data: $(form).serialize(),
  success: function() {
    alert("success called!");
  }
});

jsonpで同じことを行う最良の方法は何ですか? jsonpコールバックパラメータを定義する必要があるため、jsonpでそれを行う必要があるかどうか、およびその方法について少し混乱しています。

手伝ってくれてありがとう

4

1 に答える 1

0

さて、あなたはこれを使ってこれを試すことができますJSONP:

ライブデモ: http://jsfiddle.net/5CUk2/

(ブラウザのコンソールを確認してください)

$(function() {

    //Example using flickr API
    var diffDomainUrl = 'http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=mycallback&tags=monkey&tagmode=any&format=json';

    $('#jsonpbtn').on('click', function() {
        $.ajax({
            url: diffDomainUrl,
            dataType: 'jsonp',
            data: {},
            success: function (data, textStatus) {
                console.log(textStatus);
                console.log(data);
            },
            jsonpCallback: 'mycallback'
        });
    });

});

ちなみに、cross-domainこれを見てリクエストを行う他の可能な「方法」を試すことができます。おそらく役立つでしょう:

http://usejquery.com/blog/jquery-cross-domain-ajax-guide

于 2013-09-15T22:32:16.407 に答える