JSONPとは何か JSONPとは、JavaScript Object Notation with Paddingの略で、JSONデータを利用したデータ交換方法の一つです。 JSONPとは何か JSONPとは、JSONデータをパディングして利用する技術(shù)のことで、主に同一ドメイン外からのJavaScriptの読み込みを許可するためのものです。 JSONPの使用方法 JSONPの使用方法は以下の通りです。 1.
ブラウザのセキュリティ制限により、データは直接ドメイン間で(ルートドメイン、サブドメイン、異なるポートを含む)リクエストできません。ターゲットドメインがアクセスを許可していれば除きます。例えば、crossdomain.xmlの設定やHTTPヘッダでの認可が必要です。
しかし、crossdomain.xmlはすべてのデータへのアクセスを許可するが、ヘッダー設定は非常に厄介です。
したがって、認可データの返卻にJSONPを設定し、すべての呼び出し元にデータを取得させることができます。
JSONPはコールバックを使った原理です。
ウェブページで他のページのJSをインクルードすると、そのページのJSはあなたのページのコードを呼び出せるよ。
直接リクエストのJavaScriptと、リクエストされた動(dòng)的ページ(jsp,php,aspx)で出力されるJavaScriptは効果が同じです。
function showjson(json){
alert(json.url);
}
如果引用的js或動(dòng)態(tài)頁(yè)面里有 showjson({"url":" http://www.foxrdc.com "});這行代碼的話(huà),那就會(huì )彈出 http://www.foxrdc.com
以下ページでリクエストします http://www.ibilibili.com/static/js/forbejson/userinfo.php ページのデータ、このPHPページのデータは、showjsonコールバック関數を呼び出して、bejsonページのshowjsonメソッドにJSONを渡します:
< ?php
// ここではPHPページ內で、showjsonメソッドをコールバックします。このメソッドは、上記で定義されたローカルページのコールバックメソッドと一致する必要があります。
echo 'showjson({"url":"http://www.foxrdc.com"})';
?>
PHPでのリクエストとコールバック関數:
$("#getuserp").click(function(){
$.getScript("http://www.foxrdc.com/test/userinfop.php");
});
それでは、パケットキャプチャを行ったら(上圖參照)、ボタンをクリックするとHTTPリクエストが送信されます。
リクエストしました// www.foxrdc.com/test/userinfop.php ページ
頁(yè)面里輸出了 showjson({"url":" http://www.foxrdc.com "}) ,
因為は、 JavaScriptファイルとして読み込む したがって、ローカルページのshowjsonにコールバックを行い(緑色の矢印を參照)、JSONパラメータを渡します(赤色の矢印を參照)。したがって、JSON內のURLが彈出されます。
ありがとうございます
瓢の花(かごのはな)
指出コードのエラー、そして正しいコードを提供してください。
?x $.ajax({
? ? url:'//www.foxrdc.com/test/userinfop.php',
? ? type:"GET",
? ? ? ? ? ?dataType:"jsonp",
? ? ? ? ? ?jsonp: false,
? ? ? ? ? ?jsonpCallback: "showjson", ここの値はコールバック関數の名前と同じにする必要があります。
? ? ? ? ? ?success:function(data){
? ? ? ? ? ? ? ?console.log("Script loaded and executed.");
? ? ? ? ? },
? ? ? ? ? ?error:function (textStatus) { 失敗後に呼び出される関數
? ? ? ? ? ? ? ?console.log(JSON.stringify(textStatus));
? ? ? ? ? }
});
最近使用した: