多くの開発者は jquery を使用してフロントエンドとサーバーサイドでデータを操作しているため、フロントエンドで jquery を使用すればあらゆるサイトのデータを読み取ることができると考えがちです。最近開発をしていた際、他社のプロジェクトとデータを共有する必要があり、サーバーリソースをあまり占有しないことを考えて、サーバー経由でデータを転送するのではなく、HTMLで直接読み込むことにしました。その後、ブラウザ側でクロスドメインアクセスの問題が発生しました。
クロスドメインのセキュリティ制限はブラウザ側を指しますが、サーバー側にはクロスドメインのセキュリティ制限はありません。
現在、ブラウザ側のクロスドメイン アクセスには 2 つの一般的な方法が使用されています:
1. jQuery の ajax によるクロスドメイン これは実際には jsonp を使用して実装されます。
jsonp は英語の json with padding の略称です。これにより、スクリプト タグをサーバー側で生成してクライアントに返すことができます。つまり、JavaScript タグが動的に生成され、データは JavaScript コールバックを通じて読み取られます。
HTML ページ側のサンプル コード:
//まず jquery の js パッケージを紹介します
jQuery(document).ready(function(){
$.ajax({
type: "get", //jquey はポストクロスドメインをサポートしていません
async:false、
url: "http://api.taobao.com/apitools/ajax_props.do", //クロスドメインリクエスト URL
データタイプ: "jsonp"、
//jsonp コールバック関数名を取得するためにリクエスト ハンドラーに渡されるパラメータ名 (デフォルト: callback)
jsonp: "jsoncallback"、
//カスタマイズされた jsonp コールバック関数名、デフォルトは jQuery によって自動的に生成されるランダムな関数名です
jsonpCallback:"success_jsonpCallback",
//クロスドメインサーバー上の json データの取得に成功した後、このコールバック関数は動的に実行されます
成功: function(json){
アラート(json);
サーバー側のコードが重要なポイントです。私は当初、クライアントが jsonp を通じてクロスドメイン アクセスに直接アクセスできる限り、そうではなく、サーバー側のサポートが必要であると考えていました。
コードをコピー
コードは次のとおりです。
//callbackName の値は実際には次のようになります: success_jsonpCallback
文字列コールバック名 = (String)request.getAttribute("jsoncallback");
//json 文字列の単純なシミュレーション。実際には変換に Google の gson を使用できます。回数は文字列のスプライスによって行われます
//{"名前":"張三","年齢":28}
//「」記号をエスケープするためです
String jsonStr = "{"名前":"張三","年齢":28}";
//最終的に返されるデータは次のとおりです: success_jsonpCallback({"name":"Zhang San","age":28})
文字列 renderStr = callbackName "(" jsonStr ")";
response.setContentType("text/plain;charset=UTF-8");応答.getWriter().write(renderStr);
}
jsonp の原則:
まずクライアント側でコールバック (例: 'jsoncallback') を登録し、次にそのコールバック名 (例: success_jsonpCallback) をサーバー側の対応する処理関数に渡します。
サーバーはまず、クライアントに返す必要がある json データを生成します。次に、JavaScript 構文を使用して関数を生成します。関数名は、渡されたパラメーター (jsoncallback) (success_jsonpCallback) の値です。
最後に、json データがパラメーターとして関数に直接配置され、js 構文ドキュメントが生成され、クライアントに返されます。
クライアントのブラウザはスクリプト タグを解析し、サーバーから返されたデータをパラメータとして使用します。
クライアントによって事前定義されたコールバック関数を渡します (上記の例では jquery $.ajax() メソッドによってカプセル化されています)。成功: 関数 (json))。
実際には、データのクロスドメイン読み込みはスクリプトを動的に追加することで行われます。データを直接取得できないため、コールバック関数を使用する必要があります。
2. jquery の getJson を使用してドメイン間でデータを読み取る
実際、getJson メソッドの基本原理は、ajax が jsonp を使用する方法と同じです。
GetJson は、リモート データを取得し、json 形式で返すために jquery でよく使用されます。関数のプロトタイプは次のとおりです:
jQuery.getJSON(url,data,success(data,status,xhr))
参数 | 描述 |
---|---|
url | 必需。规定将请求发送的哪个 URL。 |
data | 可选。规定连同请求发送到服务器的数据。 |
success(data,status,xhr) |
可选。规定当请求成功时运行的函数。 额外的参数:
|
追加パラメータ:
- レスポンス - リクエストからの結果データが含まれます
- ステータス - リクエストのステータスが含まれます
- xhr - XMLHttpRequest オブジェクトが含まれます
コードは次のとおりです:
$.ajax({
url: url,
data: data,
成功: コールバック,
}); 🎜>本題に戻り、getJson を使用してドメイン間でデータを取得する方法を見てみましょう。
HTML ページのサンプル コード:
$ .getJSON( "http://api.taabao.com/apitools/ajax_props.do&jsoncallback=?",
関数 (データ) {
アラート(データ);
}
);
実行原理:
リクエストを送信するときは、コールバック関数名をサーバーに渡す必要があります。サーバーはコールバック関数名を取得し、クライアントがそれを呼び出せるように、戻りデータをパラメーターの形式でクライアントに返します。 。
そのため、リクエスト URL を送信するアドレスの後には、jsoncallback=? のようなパラメーターが続く必要があります。jquery は、? 番号を自動的に生成されたコールバック関数の名前に自動的に置き換えます。
最終的な実際のリクエストは次のとおりです:
http://api.taabao.com/apitools/ajax_props.do&jsoncallback=jsonp1322444422697そこで、ajax メソッドと比較したいと思います。つまり、コールバック関数の 1 つは自動生成された関数名で、もう 1 つは手動で指定した関数名です。

PythonとJavaScriptの主な違いは、タイプシステムとアプリケーションシナリオです。 1。Pythonは、科学的コンピューティングとデータ分析に適した動的タイプを使用します。 2。JavaScriptは弱いタイプを採用し、フロントエンドとフルスタックの開発で広く使用されています。この2つは、非同期プログラミングとパフォーマンスの最適化に独自の利点があり、選択する際にプロジェクトの要件に従って決定する必要があります。

PythonまたはJavaScriptを選択するかどうかは、プロジェクトの種類によって異なります。1)データサイエンスおよび自動化タスクのPythonを選択します。 2)フロントエンドとフルスタック開発のためにJavaScriptを選択します。 Pythonは、データ処理と自動化における強力なライブラリに好まれていますが、JavaScriptはWebインタラクションとフルスタック開発の利点に不可欠です。

PythonとJavaScriptにはそれぞれ独自の利点があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1. Pythonは、データサイエンスやバックエンド開発に適した簡潔な構文を備えた学習が簡単ですが、実行速度が遅くなっています。 2。JavaScriptはフロントエンド開発のいたるところにあり、強力な非同期プログラミング機能を備えています。 node.jsはフルスタックの開発に適していますが、構文は複雑でエラーが発生しやすい場合があります。

javascriptisnotbuiltoncorc;それは、解釈されていることを解釈しました。

JavaScriptは、フロントエンドおよびバックエンド開発に使用できます。フロントエンドは、DOM操作を介してユーザーエクスペリエンスを強化し、バックエンドはnode.jsを介してサーバータスクを処理することを処理します。 1.フロントエンドの例:Webページテキストのコンテンツを変更します。 2。バックエンドの例:node.jsサーバーを作成します。

PythonまたはJavaScriptの選択は、キャリア開発、学習曲線、エコシステムに基づいている必要があります。1)キャリア開発:Pythonはデータサイエンスとバックエンド開発に適していますが、JavaScriptはフロントエンドおよびフルスタック開発に適しています。 2)学習曲線:Python構文は簡潔で初心者に適しています。 JavaScriptの構文は柔軟です。 3)エコシステム:Pythonには豊富な科学コンピューティングライブラリがあり、JavaScriptには強力なフロントエンドフレームワークがあります。

JavaScriptフレームワークのパワーは、開発を簡素化し、ユーザーエクスペリエンスとアプリケーションのパフォーマンスを向上させることにあります。フレームワークを選択するときは、次のことを検討してください。1。プロジェクトのサイズと複雑さ、2。チームエクスペリエンス、3。エコシステムとコミュニティサポート。

はじめに私はあなたがそれを奇妙に思うかもしれないことを知っています、JavaScript、C、およびブラウザは正確に何をしなければなりませんか?彼らは無関係であるように見えますが、実際、彼らは現代のウェブ開発において非常に重要な役割を果たしています。今日は、これら3つの間の密接なつながりについて説明します。この記事を通して、JavaScriptがブラウザでどのように実行されるか、ブラウザエンジンでのCの役割、およびそれらが協力してWebページのレンダリングと相互作用を駆動する方法を学びます。私たちは皆、JavaScriptとブラウザの関係を知っています。 JavaScriptは、フロントエンド開発のコア言語です。ブラウザで直接実行され、Webページが鮮明で興味深いものになります。なぜJavascrを疑問に思ったことがありますか


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。
