検索
ホームページウェブフロントエンドjsチュートリアルJSON と JSONP の違いと jQuery の ajax jsonp_jquery の使用についての簡単な説明

JSON と JSONP

JSON (JavaScript Object Notation) は、ブラウザとサーバーの間で情報を交換するために使用される軽量のデータ交換形式です。

JSONP (JSON With Padding) は、関数呼び出しにパッケージ化された JSON (またはラップされた JSON) です。

JSON はデータ形式であり、JSONP はデータの呼び出し方法です。

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

//JSON
{
「名前」: 「sb」
}

コードをコピーします コードは次のとおりです:

//JSONP
コールバック({
「名前」: 「sb」
})

セキュリティ上の理由から、スクリプト (AJAX) はこのドメイン外のコンテンツにアクセスできません。ただし、静的リソースはドメイン ポリシーによって制限されず、JSOP はこの原則を使用して、クロスドメイン データの取得を実現します。

例 1:

コードをコピーします コードは次のとおりです:

//shoPrice 関数を定義します
関数 showPrice(data) {
alert("シンボル: " data.symbol ", 価格: " data.price);
}

コードをコピーします コードは次のとおりです:

//Web ページに showPrice 関数とパラメータを含めます

関数 showPrice(data) {
alert("シンボル: " data.symbol ", 価格: " data.price);
}


この例は、静的な JSON データをパラメーターとして使用して JavaScript 関数を呼び出す方法を示しています。

例 2:

最初の関数呼び出しは js ファイルに記述してサーバーに配置し、script タグを使用してページにロードできます。このタグは動的に作成できます。

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


// これは JSON データで呼び出される関数です
関数 showPrice(data) {
alert("シンボル: " data.symbol ", 価格: " data.price);
}

var url = “remote.js” // 外部スクリプトの URL
; // スクリプトを動的に挿入します
var script = document.createElement('script');
script.setAttribute('src', url);

//スクリプトをロード
document.getElementsByTagName('head')[0].appendChild(script);

remote.js の内容は前にタグに書いたものと同じです:


1 showPrice({シンボル: 'IBM'、価格: 91.42});
動的に挿入された JavaScript コードは、パラメーターとして渡される JSON データと、showPrice 関数呼び出しステートメントのパラメーターを受け取ります。

そこで質問は、データを取得するたびに showPrice 関数を呼び出す必要があるかということです。もちろん、これにはフロントエンドとバックエンドのプログラマが合意する必要があり、特にインターフェイスが公開開発されている場合には、多くの不便が生じます。 JSOP は次の方法で処理されます。フロントエンドはコールバック関数名パラメータを渡すことがサポートされており、バックエンドはコールバック関数名パラメータを受け取り、関数への呼び出しを生成し、JSON データをパラメータとして渡して挿入します。クライアントに到達して実行を開始すると、ページに書き込まれます。

例 3:

コールバックパラメータを使用してコードを動的に挿入します:



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


// これは JSON データで呼び出される関数です
関数 showPrice(data) {
alert("シンボル: " data.symbol ", 価格: " data.price);
}
var url = "remote.js?callback='showPrice'" // 外部スクリプトの URL
; // スクリプトを動的に挿入します
var script = document.createElement('script');
script.setAttribute('src', url);
//スクリプトをロード
document.getElementsByTagName('head')[0].appendChild(script);

バックエンドの PHP に実装された JSONP サービスのコード スニペット:



コードをコピー コードは次のとおりです:
$jsonData = getDataAsJson($_GET['symbol']);
echo $_GET['callback'] . '(' . $jsonData . ');';
// 印刷: showPrice({"symbol" : "IBM", "price" : "91.42"});

これは JSONP の定義によく適合し、JSON データを関数呼び出しにパッケージ化します。

上記の例は以下からのものです:

クロスドメイン通信に JSONP を使用する、パート 1: JSONP と jQuery を使用して強力なマッシュアップを迅速に構築する


jQuery での JSONP の使用
jQuery の AJAX と JSONP の呼び出しメソッドは非常に似ていますが、この現象に混同しないでください。本質的には異なります。 AJAX は XMLHttpRequest オブジェクトを通じてページ以外のコンテンツを取得しますが、JSONP はサーバー スクリプトを呼び出すために <script> タグを動的に追加します。 jQuery は JSONP を AJAX の形式としてカプセル化しますが、JSONP は AJAX の形式または特殊なケースではありません。 <br /> <br /> <br /><div class="codetitle"><span><a style="CURSOR: pointer" data="8779" class="copybut" id="copybut8779" onclick="doCopy('code8779')">コードをコピー<U> コードは次のとおりです:</script>
$.ajax({
URL: "
http://query.yahooapis.com/v1/public/yql", jsonpCallback: "showPrice",
jsonp: "コールバック",
// jQuery に JSONP
を期待していることを伝えます データ型: "jsonp",
データ: {
q: "query="cat" の search.news からタイトル、要約、URL を選択してください",
形式: "json"
}、
// レスポンスを処理します
成功: function(data) {
console.log( data ) // サーバー応答
}
});

Ajax リクエストパラメータの説明:

データ型文字列

サーバーによって返されることが予期されるデータ型。指定しない場合、jQuery は HTTP パッケージの MIME 情報に基づいて自動的にインテリジェントな判断を行います。たとえば、XML の MIME タイプは XML として認識されます。 1.4 では、JSON が JavaScript オブジェクトを生成し、script がスクリプトを実行します。サーバーから返されたデータは、この値に基づいて解析され、コールバック関数に渡されます。利用可能な値:

"xml": jQuery で処理できる XML ドキュメントを返します。

"html": プレーンテキストの HTML 情報を返します。含まれているスクリプト タグは、DOM に挿入されると実行されます。

"script": プレーンテキストの JavaScript コードを返します。結果は自動的にキャッシュされません。 「キャッシュ」パラメータが設定されていない限り。 ''''注意:''''リモート リクエスト (同じドメインの下ではない) を行う場合、すべての POST リクエストは GET リクエストに変換されます。 (読み込みにDOMスクリプトタグを使用するため)

"json": JSON データを返します。

「jsonp」: JSONP 形式。 「myurl?callback=?」などの JSONP 形式を使用して関数を呼び出す場合、jQuery はコールバック関数を実行するために ? を正しい関数名に自動的に置き換えます。

"text": プレーンテキスト文字列を返します

jsonp、

jsonp リクエスト内のコールバック関数の名前を書き換えます。この値は、「callback=?」などの GET または POST リクエストの URL パラメーターの「callback」部分を置き換えるために使用されます。たとえば、{jsonp:'onJsonPLoad'} により、「onJsonPLoad」がサーバーに渡されます。

jsonpCallback、

jsonpのコールバック関数名を指定します。この値は、j​​Query によって自動的に生成されるランダムな関数名の代わりに使用されます。これは主に、jQuery が一意の関数名を生成できるようにして、リクエストの管理やコールバック関数とエラー処理の提供を容易にするために使用されます。ブラウザで GET リクエストをキャッシュする場合は、このコールバック関数名を指定することもできます。ただし、実際の使用では、この例の showPrice などのコールバック関数を記述する必要はありません。また、jQuery が JSONP の処理時に自動的にコールバック関数を生成し、データを取り出して成功メソッドを呼び出します。次のようになります:

コードをコピーします コードは次のとおりです:

関数 success_jsonpCallback(データ) { 成功(データ) }

上記がこの記事の全内容です。jsonp について詳しく理解できましたか?ご質問がございましたら、メッセージを残してください。一緒に話し合います。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
VUE3怎么使用JSON编辑器VUE3怎么使用JSON编辑器May 12, 2023 pm 05:34 PM

1、先看看效果图,可以自行选择展示效果2、这是我在vue3项目中使用的JSON编辑器,首先引入第三方插件npminstalljson-editor-vue3yarnaddjson-editor-vue33、引入到项目中//导入模块importJsonEditorVuefrom&#39;json-editor-vue3&#39;//注册组件components:{JsonEditorVue},4、一般后端返回的是会将JSON转为String形式我们传给后端也是通过这种形式,就可以通

SpringBoot之Json的序列化和反序列化问题怎么解决SpringBoot之Json的序列化和反序列化问题怎么解决May 12, 2023 pm 04:07 PM

控制json序列化/反序列化1.@JsonIgnoreProperties的用法@JsonIgnoreProperties(value={"prop1","prop2"})用来修饰Pojo类,在序列化和反序列化的时候忽略指定的属性,可以忽略一个或多个属性.@JsonIgnoreProperties(ignoreUnknown=true)用来修饰Pojo类,在反序列化的时候忽略那些无法被设置的属性,包括无法在构造子设置和没有对应的setter方法.2.@Js

Java怎么调用接口获取json数据解析后保存到数据库Java怎么调用接口获取json数据解析后保存到数据库May 14, 2023 am 10:58 AM

Java调用接口获取json数据保存到数据库1.在yml文件中配置自己定义的接口URL//自己定义的JSON接口URLblacklist_data_url:接口URL2.在Controller中添加请求方法和路径/***@Title:查询*@Description:查询车辆的记录*@Author:半度纳*@Date:2022/9/2717:33*/@GetMapping("/Blacklist")publicvoidselectBlacklist(){booleana=imB

深入解析JWT(JSON Web Token)的原理及用法深入解析JWT(JSON Web Token)的原理及用法Jan 10, 2023 am 10:55 AM

本篇文章给大家带来了关于JWT的相关知识,其中主要介绍了什么是JWT?JWT的原理以及用法是什么?感兴趣的朋友,下面一起来看一下吧,希望对大家有帮助。

php输出json无法解析的原因和解决方法【总结】php输出json无法解析的原因和解决方法【总结】Mar 23, 2023 pm 04:35 PM

PHP作为一种常见的编程语言,在web开发中使用广泛,其与前端交互的方式也多种多样。其中,输出Json数据是一种常见的交互方式,但有时候会碰到Json无法解析的问题。为什么会出现无法解析的情况呢?下面列举了几个可能的原因。

java怎么校验json的格式是否符合要求java怎么校验json的格式是否符合要求May 15, 2023 pm 04:01 PM

JSONSchemaJSONSchema是用于验证JSON数据结构的强大工具,Schema可以理解为模式或者规则。JsonSchema定义了一套词汇和规则,这套词汇和规则用来定义Json元数据,且元数据也是通过Json数据形式表达的。Json元数据定义了Json数据需要满足的规范,规范包括成员、结构、类型、约束等。JSONSchema就是json的格式描述、定义、模板,有了他就可以生成任何符合要求的json数据json-schema-validator在java中,对json数据格式的校验,使用

php如何将xml转为json格式?3种方法分享php如何将xml转为json格式?3种方法分享Mar 22, 2023 am 10:38 AM

当我们处理数据时经常会遇到将XML格式转换为JSON格式的需求。PHP有许多内置函数可以帮助我们执行这个操作。在本文中,我们将讨论将XML格式转换为JSON格式的不同方法。

SpringBoot怎么返回Json数据格式SpringBoot怎么返回Json数据格式May 19, 2023 pm 11:49 PM

一、@RestController注解在SpringBoot中的Controller中使用@RestController注解即可返回JSON格式的数据。@RestController注解包含了@Controller和@ResponseBody注解。@ResponseBody注解是将返回的数据结构转换为JSON格式。@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Controller@Respons

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!