2

私はこの関数を持っています:

 var current_url=window.location.href;
$.ajax({url:      'http://api.apps.com/html/'+appid,
      data:      {url:current_url},
      dataType: 'jsonp',
      timeout:  10000,
      jsonp: "set_url_target",
      success: function(data) { console.log(data); },
       error: function(jqXHR, textStatus, errorThrown) { console.log(errorThrown); console.log(textStatus); }
      }).done(function() { 
          console.log("Message has been complete!!");
        });

私が欲しいのは、http://api.apps.com/html/でこの関数をトリガーする ことです(これは別のドメインであることに注意してください)。

function set_url_target(url){
    console.log("Url has been recieved: "+url);
}

これまでのところ、set_url_targetはトリガーされておらず、コンソールに何も出力されず、エラーも何も表示されません。なぜですか?

4

2 に答える 2

2

外部アプリケーションがあなたの制御下にない場合、サーバーからクライアント側に送信される応答を更新してJSONPを正常に使用する必要があるため、多くのことを行うことができないと思います..

したがって、2 つのオプションがあります。a) アプリケーションのサーバー側で呼び出しを行い、それをクライアントに返します。b) または、完全にクライアント側にするために、yahoo パイプや、json応答を有効なjsonp応答に変換する他のサービスなどを使用できます。

yahooパイプを使用してそれを行う方法の例を次に示します: https://gist.github.com/316660

ライセンスについてよくわかりません。それらを確認し、関連する API/帯域幅のコストがあるかどうかを確認してください。それがあなたにとってどのように機能するか教えてください..

于 2012-06-24T10:59:01.213 に答える
0

jsonpこれを試して、属性とjsonpCallback属性に注意してください

    var current_url=window.location.href;
    $.ajax({url:      'http://api.apps.com/html/'+appid,
            data:      {url:current_url},
            dataType: 'jsonp',
            timeout:  10000,
            jsonp : false,
            jsonpCallback: "set_url_target",
       success: function(data) { console.log(data); },
       error: function(jqXHR, textStatus, errorThrown) { console.log(errorThrown); console.log(textStatus); }
  }).done(function() { 
      console.log("Message has been complete!!");
    });

これに関する詳細については、AJAX

于 2012-06-24T11:13:10.523 に答える