jQuery ajax (レビュー) - Baidu Ajax リクエスト分離バージョン_JavaScript スキル
この記事は確かに 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 を通じて拡張されます。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









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

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

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

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

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

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

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

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