ホームページ ウェブフロントエンド jsチュートリアル jQuery ajax (レビュー) - Baidu Ajax リクエスト分離バージョン_JavaScript スキル

jQuery ajax (レビュー) - Baidu Ajax リクエスト分離バージョン_JavaScript スキル

May 16, 2016 pm 05:42 PM
ajax request

この記事は確かに Baidu ajax に関するものですが、ずっと前のバージョンです。
jQuery ajax モジュールは 800 行、コア関数 jQuery.ajax は 380 行あるため、このコードを直接解析するとコード ロジックで混乱しやすくなります。

それでは、まず初期の Baidu Tangram プロジェクトの単純な ajax コードを分析してみましょう。
最初にこれを使用して、ajax の知識を復習してください。

baidu.ajax.request 分離版

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

/**
* ajax リクエストを送信します
* @author: allstar, erik, berg
* @name ajax.request
* @function
* @grammar ajax.request(url[, options] )
* @param {string} url リクエストを送信する URL
* @param {Object} options リクエストを送信するオプションのパラメータ
* @config {String} [method] リクエストの種類送信済み。デフォルトは GET
* @config {Boolean} [async] 非同期でリクエストするかどうか。デフォルトは true (非同期) です。
* @config {String} [data] 送信されるデータ。 GET リクエストの場合、この属性は必要ありません
* @config {Object} [headers] 設定する http リクエスト ヘッダー
* @config {number} [timeout] タイムアウト、単位 ms
* @ config {String} [username] Username
* @config {String} [password] Password
* @config {Function} [onsuccess] リクエストが成功したときにトリガーされます、function(XMLHttpRequest xhr, string responseText)。
* @config {Function} [onfailure] リクエストが失敗したときにトリガーされます、function(XMLHttpRequest xhr)。
* @config {Function} [onbeforerequest] リクエスト function(XMLHttpRequest xhr) を送信する前にトリガーされます。
*
* @meta standard
* @see ajax.get,ajax.post
*
* @returns {XMLHttpRequest} リクエストを送信する XMLHttpRequest オブジェクト
*/
var ajax = {};
ajax.request = function(url,options,type){
// 非同期かどうかが必要です
var async = options.async||true,
// ユーザー名、パスワード
username = options.username||"",
password = options.password||"",
/ / 送信するデータ
data = options.data||"",
// GET または POST
method = (options.method||"GET").toUpperCase(),
// リクエスト ヘッダー
headers = options.headers||{},
// イベント ハンドラー関数テーブル
eventHandler = {},
// リクエスト データ型
dataType = type ||" string";//xml||string
function stateChangeHandler(){
// 準備ができているかどうかを確認します
if(xhr.readyState == 4){
// xhr を取得しますcurrent Status
var sta = xhr.status;
// 成功したかどうかを判断します
if(sta == 200||sta == 304){
// 成功した場合は成功をトリガーします
fire( "success");
}else{
// 失敗が失敗を引き起こす
fire("failure");
}
// バインディングをクリア
(function (){
xhr.onreadystatechange= new Function();
if (async){
xhr = null;
}
} }
function fire(type){
// タイプを ontype に変更します
type = "on" type;
// イベント ハンドラー テーブルで対応するイベント処理関数を検索します
var handler =eventHandler[type];
// 関数が存在する場合、
if(handler){
// 失敗した場合
if(type != "onsuccess"){
handler (xhr);
// 成功
}else{
// dataType
handler(xhr,dataType!="xml"?xhr.responseText:xhr.responseXML ); に従って異なるデータを返します。
}
}
}
//eventHandler
for(var key in options){
eventHandler[key] = options[key]
}
; // 新しい XMLHttpRequest オブジェクトを作成します
var xhr = new XMLHttpRequest();
// メソッドが GET の場合、データを URL にアセンブルします
if(method == "GET"){
url = (url.indexOf("?")>=0)?"&":"?";
url = data;
// データをクリアします
data = null; }
// 非同期の場合
if (async){
//readystatechange ハンドラーをバインドします
xhr.onreadystatechange = stateChangeHandler;
}
// パスワードが必要かどうかを確認します
if(ユーザー名){
xhr.open(メソッド,url,async,ユーザー名,パスワード);
}else{
xhr.open(メソッド,url,async);
// POST の場合
if(method == "POST"){
// リクエストヘッダを設定
xhr.setRequestHeader("Content-Type", "application/x -www) -form-urlencoded");
}
// オプションにすべてのリクエスト ヘッダー情報を設定します
for(var key in headers){
xhr.setRequestHeader(name,headers[ key])
}
// イベントをトリガーします beforerequest
fire("beforerequest");
// データを送信します
xhr.send(data); // 非同期でない場合
if (!async){
// stateChangeHandler を直接実行してデータを処理します
stateChangeHandler()
}
return xhr;
このコードは比較的理解しやすいです:
• XMLHttpRequest() を通じて新しい XMLHttpRequest オブジェクトを作成します。
•GETかPOSTかを確認し、GETの場合はURLを組み立て、POSTの場合はリクエストヘッダを設定します。
•非同期かどうかを確認し、非同期であればlisten関数stateChangeHandlerを登録します。
•ユーザー名とパスワードが必要かどうかを確認し、open を実行します。
•リクエストを送信します。
•リッスン関数がイベントを処理するまで待ちます。
baidu.ajax.get & baidu.ajax.post
コードをコピー コードは次のとおりです:

/**
* 投稿リクエストを送信します
* @name ajax.post
* @function
* @grammar ajax.post(url, data[, onsuccess])
* @param {string} url リクエストの URL アドレス
* @param {string} data 送信されたデータ
* @param {Function} [onsuccess] リクエストが成功した後のコールバック関数 function(XMLHttpRequest xhr, string responseText)
* @meta standard
* @see ajax.get,ajax.request
*
* @returns {XMLHttpRequest} リクエストを送信する XMLHttpRequest オブジェクト
*/
ajax.post = function(url,data,onsuccess){
return ajax.request(url,{"data":data,"onsuccess": onsuccess,method :"POST"});
}

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

/**
* get リクエストを送信します
* @name ajax.get
* @function
* @grammar ajax.get(url[, onsuccess])
* @param {string} URL 送信リクエストされた URL アドレス
* @param {Function} [onsuccess] リクエストが成功した後のコールバック関数、function(XMLHttpRequest xhr, string responseText)
* @meta standard
* @see ajax.post,ajax . request
*
* @returns {XMLHttpRequest} 要求された XMLHttpRequest オブジェクトを送信します
*/
ajax.get = function(url,data,onsuccess){
return ajax.request(url,{"data": data,"onsuccess": onsuccess});
}

baidu.ajax.get と baidu.ajax.post は両方とも baidu.ajax.request を通じて拡張されます。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

jQuery AJAX リクエストで発生した 403 エラーを解決する方法 jQuery AJAX リクエストで発生した 403 エラーを解決する方法 Feb 20, 2024 am 10:07 AM

タイトル: jQuery AJAX リクエストの 403 エラーを解決する方法とコード例。403 エラーは、サーバーがリソースへのアクセスを禁止するリクエストを指します。このエラーは通常、リクエストにアクセス許可がないか、サーバーによって拒否されたために発生します。 jQueryAJAX リクエストを行うときにこのような状況に遭遇することがありますが、この記事ではこの問題の解決方法とコード例を紹介します。解決策: 権限を確認します。まず、要求された URL アドレスが正しいことを確認し、リソースにアクセスするための十分な権限があることを確認します。

jQuery AJAXリクエスト403エラーを解決する方法 jQuery AJAXリクエスト403エラーを解決する方法 Feb 19, 2024 pm 05:55 PM

jQuery は、クライアント側の開発を簡素化するために使用される人気のある JavaScript ライブラリです。 AJAX は、Web ページ全体をリロードせずに、非同期リクエストを送信し、サーバーと対話するテクノロジーです。ただし、jQuery を使用して AJAX リクエストを行うと、403 エラーが発生することがあります。 403 エラーは通常、セキュリティ ポリシーまたは権限の問題が原因で、サーバーによってアクセスが拒否されたエラーです。この記事では、jQueryAJAX リクエストで 403 エラーが発生した場合の解決方法について説明します。

jQuery AJAX エラー 403 の問題を解決するにはどうすればよいですか? jQuery AJAX エラー 403 の問題を解決するにはどうすればよいですか? Feb 23, 2024 pm 04:27 PM

jQueryAJAX エラー 403 の問題を解決するにはどうすればよいですか? Web アプリケーションを開発する場合、非同期リクエストを送信するために jQuery がよく使用されます。ただし、jQueryAJAX の使用時に、サーバーによってアクセスが禁止されていることを示すエラー コード 403 が発生する場合があります。これは通常、サーバー側のセキュリティ設定が原因ですが、回避する方法があります。この記事では、jQueryAJAX エラー 403 の問題を解決する方法と具体的なコード例を紹介します。 1.作る

Ajaxを使用してPHPメソッドから変数を取得するにはどうすればよいですか? Ajaxを使用してPHPメソッドから変数を取得するにはどうすればよいですか? Mar 09, 2024 pm 05:36 PM

Ajax を使用して PHP メソッドから変数を取得することは、Web 開発では一般的なシナリオであり、Ajax を使用すると、データを更新せずにページを動的に取得できます。この記事では、Ajax を使用して PHP メソッドから変数を取得する方法と、具体的なコード例を紹介します。まず、Ajax リクエストを処理し、必要な変数を返すための PHP ファイルを作成する必要があります。以下は、単純な PHP ファイル getData.php のサンプル コードです。

PHP と Ajax: オートコンプリート提案エンジンの構築 PHP と Ajax: オートコンプリート提案エンジンの構築 Jun 02, 2024 pm 08:39 PM

PHP と Ajax を使用してオートコンプリート候補エンジンを構築します。 サーバー側スクリプト: Ajax リクエストを処理し、候補を返します (autocomplete.php)。クライアント スクリプト: Ajax リクエストを送信し、提案を表示します (autocomplete.js)。実際のケース: HTML ページにスクリプトを組み込み、検索入力要素の識別子を指定します。

PHP と Ajax: 動的に読み込まれるコンテンツを作成するためのソリューション PHP と Ajax: 動的に読み込まれるコンテンツを作成するためのソリューション Jun 06, 2024 pm 01:12 PM

Ajax (非同期 JavaScript および XML) を使用すると、ページをリロードせずに動的コンテンツを追加できます。 PHP と Ajax を使用すると、製品リストを動的にロードできます。HTML はコンテナ要素を含むページを作成し、Ajax リクエストはロード後に要素にデータを追加します。 JavaScript は Ajax を使用して XMLHttpRequest を通じてサーバーにリクエストを送信し、サーバーから JSON 形式で商品データを取得します。 PHP は MySQL を使用してデータベースから製品データをクエリし、それを JSON 形式にエンコードします。 JavaScript は JSON データを解析し、ページ コンテナーに表示します。ボタンをクリックすると、製品リストをロードするための Ajax リクエストがトリガーされます。

PHP の Request オブジェクトとは何ですか? PHP の Request オブジェクトとは何ですか? Feb 27, 2024 pm 09:06 PM

PHP の Request オブジェクトは、クライアントからサーバーに送信される HTTP リクエストを処理するために使用されるオブジェクトです。 Request オブジェクトを通じて、リクエストを処理して応答するために、リクエスト メソッド、リクエスト ヘッダー情報、リクエスト パラメータなどのクライアントのリクエスト情報を取得できます。 PHP では、$_REQUEST、$_GET、$_POST などのグローバル変数を使用して、要求された情報を取得できますが、これらの変数はオブジェクトではなく配列です。リクエスト情報をより柔軟かつ便利に処理するために、次のことができます。

PHP と Ajax: Ajax のセキュリティを向上させる方法 PHP と Ajax: Ajax のセキュリティを向上させる方法 Jun 01, 2024 am 09:34 AM

Ajax セキュリティを向上させるには、いくつかの方法があります。 CSRF 保護: トークンを生成してクライアントに送信し、それを検証リクエストのサーバー側に追加します。 XSS 保護: htmlspecialchars() を使用して入力をフィルタリングし、悪意のあるスクリプトの挿入を防ぎます。 Content-Security-Policy ヘッダー: 悪意のあるリソースの読み込みを制限し、スクリプトとスタイル シートの読み込みを許可するソースを指定します。サーバー側の入力を検証する: Ajax リクエストから受け取った入力を検証して、攻撃者による入力の脆弱性の悪用を防ぎます。安全な Ajax ライブラリを使用する: jQuery などのライブラリによって提供される自動 CSRF 保護モジュールを利用します。

See all articles