ホームページ  >  記事  >  ウェブフロントエンド  >  jquery_jquery配下でjsonpクロスドメインアクセスを利用する実装方法

jquery_jquery配下でjsonpクロスドメインアクセスを利用する実装方法

WBOY
WBOYオリジナル
2016-05-16 18:22:081106ブラウズ
コードをコピーします コードは次のとおりです:

$.ajax({
async:false,
url: '', // クロスドメイン URL
type: 'GET',
dataType: 'jsonp',
jsonp: 'jsoncallback', // デフォルトのコールバック
data: mydata, // Request data
timeout: 5000,
beforeSend: function(){ //jsonp メソッドがトリガーされないのは、dataType が jsonp として指定されている場合、ajax イベントではなくなることが考えられます。
},
success: function (json) { //クライアント側の jquery によって事前定義されたコールバック関数は、クロスドメイン サーバーで json データを正常に取得した後、動的に実行されます
if(json.actionErrors.length!= 0){
alert(json.actionErrors);
}

},
complete: function(XMLHttpRequest, textStatus){

},
error: function(xhr){
//Jsonp モードこのメソッドはトリガーされません
//リクエスト エラー処理
alert("リクエスト エラー (相関ネットワークのステータスを確認してください) .)");
}
});



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

$.getJSON(url "?callback=?",
function(json){

});
このメソッドは、実際には上記の $.ajax({..}) の高レベル ラッパーの例です。

サーバー側でコールバック パラメーター (例: jsonp*****) を取得して、jQuery 側で後続のコールバックを取得します
そして、次のようなものを返します: "jsonp**** *(" 返される json 配列 ")";
jquery はコールバック メソッドを通じてこれを動的にロードし、呼び出します: jsonp*****(json array);
これにより、クロスドメインの目的が達成されます。

JSONP は一種のスクリプト インジェクション (スクリプト インジェクション) 動作であるため、一定のセキュリティ リスクもあります。

注: jquey はクロスドメイン投稿をサポートしていません。
参考:
http://www.ibm.com/developerworks/cn/web/wa-aj-jsonp1/
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。