JSONPとは何か JSONPとは、JavaScript Object Notation with Paddingの略で、JSONデータを利用したデータ交換方法の一つです。 JSONPとは何か JSONPとは、JSONデータをパディングして利用する技術のことで、主に同一ドメイン外からのJavaScriptの読み込みを許可するためのものです。 JSONPの使用方法 JSONPの使用方法は以下の通りです。 1.
ブラウザのセキュリティ制限により、データは直接ドメイン間で(ルートドメイン、サブドメイン、異なるポートを含む)リクエストできません。ターゲットドメインがアクセスを許可していれば除きます。例えば、crossdomain.xmlの設定やHTTPヘッダでの認可が必要です。
しかし、crossdomain.xmlはすべてのデータへのアクセスを許可するが、ヘッダー設定は非常に厄介です。
したがって、認可データの返却にJSONPを設定し、すべての呼び出し元にデータを取得させることができます。
JSONPはコールバックを使った原理です。
ウェブページで他のページのJSをインクルードすると、そのページのJSはあなたのページのコードを呼び出せるよ。
直接リクエストのJavaScriptと、リクエストされた動的ページ(jsp,php,aspx)で出力されるJavaScriptは効果が同じです。
function showjson(json){
alert(json.url);
}
如果引用的js或动态页面里有 showjson({"url":" http://www.bejson.com "});这行代码的话,那就会弹出 http://www.bejson.com
以下ページでリクエストします http://www.ibilibili.com/static/js/forbejson/userinfo.php ページのデータ、このPHPページのデータは、showjsonコールバック関数を呼び出して、bejsonページのshowjsonメソッドにJSONを渡します:
< ?php
// ここではPHPページ内で、showjsonメソッドをコールバックします。このメソッドは、上記で定義されたローカルページのコールバックメソッドと一致する必要があります。
echo 'showjson({"url":"http://www.bejson.com"})';
?>
PHPでのリクエストとコールバック関数:
$("#getuserp").click(function(){
$.getScript("//www.bejson.com/test/userinfop.php");
});
それでは、パケットキャプチャを行ったら(上图参照)、ボタンをクリックするとHTTPリクエストが送信されます。
リクエストしました// www.bejson.com/test/userinfop.php ページ
页面里输出了 showjson({"url":" http://www.bejson.com "}) ,
因為は、 JavaScriptファイルとして読み込む したがって、ローカルページのshowjsonにコールバックを行い(緑色の矢印を参照)、JSONパラメータを渡します(赤色の矢印を参照)。したがって、JSON内のURLが弹出されます。
ありがとうございます
瓢の花(かごのはな)
指出コードのエラー、そして正しいコードを提供してください。
x $.ajax({
url:'//www.bejson.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));
}
});
最近使用した: