ホームページ > ウェブフロントエンド > jsチュートリアル > jsonpプロトコルprinciple_jsonの詳細な分析

jsonpプロトコルprinciple_jsonの詳細な分析

WBOY
リリース: 2016-05-16 15:38:02
オリジナル
1984 人が閲覧しました

今日、共同デバッグの開発過程でドメインを越えてデータを取得する必要があります。もちろん、dataType:'jsonp' を使用すると、問題は簡単に解決できます。
しかし、当時バックエンドは jsonp アクセスをサポートしていなかったので、後でこの関数を実装するときに、jsonp 形式で返される形式は何ですか? と尋ねました。使い方だけは知っていましたが、答えはわかりませんでした。 。 。

後から解決したのですが、問題を解くのが好きな私としては、よく調べないといけないとずっと気になっていたので、情報を読み始めたのですが、それを見て突然悟ったような気がしたので、調べてみました。やる予定だったのでみんなで共有するメモ。

JSON と JSONP の違い

JSON と JSONP の間には 1 文字の違いがありますが、実際にはまったく同じではありません。JSON はデータ交換形式であり、JSONP は JSONP メソッドを使用して得られるクロスドメイン データ対話プロトコルです。はまだ json形式のデータです。

ハッキリ言って、用JSON来传数据,靠JSONP来跨域

JSONP で詳しく説明しました

誰もが知っている 一个页面的ajax只能获取和此页面同域的数据。 ため、ドメイン間でデータを取得する必要がある場合は、JSONP メソッドを使用してデータを取得する必要があります。

下の図に示すように、これは、json 形式を使用してクロスドメイン データを取得することによって返されるエラー メッセージです。

それではどうやって解決すればいいのでしょうか?フレームワークを使用するフロントエンドの子供靴には、独自の対応するメソッドがある場合があります。たとえば、jquery では dataType设为jsonp を追加するだけで解決できますが、それを使用するときに、なぜこの方法で解決できるのかを考えたことはありますか。中心的な考え方は何ですか?

以下は詳細な説明です。最初のアイデアは、scirpt タグを使用してクロスドメイン データを導入することです。 jsonp のプロセスを最初からゆっくりと見ていきましょう。

ガイドステップ 1

書くb.com/b.js 内容:

コードをコピー コードは次のとおりです:
alert('hello');

次に、a.com/a.html の内容を書きます:

コードをコピー コードは次のとおりです:
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート