この記事は主にAjaxのreadyState(ステータス値)とステータス(ステータスコード)に関する問題についての関連情報を紹介しています。非常に優れており、必要な方は参考にしてください。
まず、次の部分を見てください。次に、Ajax の readState (ステータス値) と status (ステータス コード) に関する問題について詳しく説明します。具体的な内容は次のとおりです。 readyState (ステータス値) と status (ステータス コード)
readyState は、AJAX の実行によって経験されるいくつかの状態を指します。アクセスが成功したかどうかに関係なく、AJAX の実行ステップとして理解できます。を取得するにはreadyState"を使用します。 Statusは、AJAXアクセスが成功したかどうかに関係なく、HTTPプロトコルによって送信された情報に基づいてサーバーによって返されるHTTPヘッダー情報コードを指します。Overallを取得するには、"ajax.status"を使用します理解: 状態は状態全体を表すと簡単に理解できます。そしてステータスとは、この大きな国家の下にある特定の小さなステータスです。
2.readyStateとは
readyStateはXMLHttpRequestオブジェクトの属性であり、現在のXMLHttpRequestオブジェクトの状態を識別するために使用されます。
readyState には、0 から 4 までの合計 5 つのステータス値があります。各値は異なる意味を表します0: 初期化中、XMLHttpRequest オブジェクトはまだ初期化を完了していません
1: 読み込み中、XMLHttpRequest オブジェクトは送信を開始しましたリクエスト
2: 読み込みが完了し、XMLHttpRequest オブジェクトのリクエストが完了します
3: 解析中、XMLHttpRequest オブジェクトがサーバーの応答の読み取りを開始します
4: 完了、XMLHttpRequest オブジェクトがサーバーの応答を読み取り、終了します
3. statusとは
statusは、レスポンスのHTTPステータスコードを示すXMLHttpRequestオブジェクトの属性です
HTTP1.1プロトコルでは、HTTPステータスコードは合計5つのカテゴリに分類できます1xx:情報応答クラス、リクエストが受信され続行されたことを示す 処理 2xx: 処理成功応答クラス、アクションが正常に受信、理解、受け入れられたことを示す
3xx: 指定されたアクションを完了するために、さらなる処理をリダイレクトする応答クラス受け入れられる必要があります
4xx: クライアントエラー、クライアントリクエストに構文エラーが含まれているか、正しく実行できません
5xx: サーバーエラー、サーバーは正しいリクエストを正しく実行できません
100 - クライアントはリクエストを継続する必要があります
101 - クライアントは、サーバーに対し、要求に従って HTTP プロトコルのバージョンを変換するよう要求します
200— - トランザクションは成功しました
201 - 新しいファイルの URL を知るように求めるプロンプトを表示します
202 - 受け入れられ、処理されましたが、処理は行われませんでした完了しました
203 - 返される情報が不確実または不完全です
204 - リクエストは受信されましたが、返されました 情報は空です
205 - サーバーはリクエストを完了しました。ユーザーエージェントは現在閲覧しているファイルをリセットする必要があります
206 -サーバーはユーザーの GET リクエストの一部を完了しました
300 - リクエストされたリソースは複数の場所で利用可能です
301 - リクエストデータを削除します
302 - 他のアドレスで見つかったデータをリクエストします
303 - 顧客に他の URL にアクセスするか、アクセスするよう提案しますメソッド
304 - クライアントは GET を実行しましたが、ファイルは変更されていません
305 - 要求されたリソースは、サーバーによって指定されたアドレスから取得する必要があります
306 - 以前のバージョンの HTTP で使用され、現在は使用されていないコード現在のバージョンでは
307 - 要求されたリソースが一時的に削除されるという宣言
400 - - 構文エラーなどの不正なリクエスト
401 - リクエストの承認が失敗しました
402 - 有効な ChargeTo ヘッダー応答が保持されました
403 - リクエストは保持されていません許可されています
404 - ファイル、クエリ、または URL が見つかりません
405 - Request-Line フィールドでユーザーが定義したメソッドは許可されていません
406 - ユーザーが送信した Accept ドラッグによれば、要求されたリソースはアクセスできません
407 - 401と同様に、ユーザーは最初にプロキシサーバーで承認される必要があります
408 - クライアントクライアントは、ユーザーが指定した時間内にリクエストを完了しませんでした
409 - 現在のリソースに対するリクエストを完了できませんステータス
410 - このリソースはサーバー上にもう存在せず、これ以上の参照アドレスはありません
411 - サーバーはユーザー定義の Content-Length 属性リクエストを拒否します
412 - 現在のリクエスト ヘッダー フィールドが 1 つ以上間違っていますリクエスト
413 - リクエストされたリソースはサーバーが許可する長さを超えています
414 - リクエストされたリソース URL はサーバーが許可する長さを超えています
415 - リクエストされたリソースはリクエスト項目形式をサポートしていません
416 - リクエストには以下が含まれますRange リクエスト ヘッダー フィールド、現在のリクエスト リソース範囲内に範囲指示値が存在せず、リクエストに If-Range リクエスト ヘッダー フィールドが含まれていません
417 ——サーバーは Expect ヘッダー フィールドで指定された期待を満たしていませんプロキシサーバーの場合、次のレベルのサーバーがリクエストを満たすことができない可能性があります
500 ——サーバーが内部エラーを生成しました
501 ——サーバーはリクエストされた機能をサポートしていません
502 ——システムの過負荷を防ぐため、サーバーが一時的に利用できなくなります
503 - サーバーが過負荷になっているか、メンテナンスのために一時停止されています
504 - ゲートの過負荷、サーバーはユーザーに応答するために別のゲートまたはサービスを使用し、待ち時間が発生しています。設定値が長くなっています
505 - サーバーはリクエストヘッダーで指定されたHTTPバージョンをサポートしていないか、サポートを拒否しています
4.思考问题:为什么onreadystatechange的函数实现要同时判断readyState和status呢?
第一种思考方式:只使用readyState
var getXmlHttpRequest = function () { if (window.XMLHttpRequest) { return new XMLHttpRequest(); } else if (window.ActiveXObject) { return new ActiveXObject("Microsoft.XMLHTTP"); } }; var xhr = getXmlHttpRequest(); xhr.open("get", "1.txt", true); xhr.send(); xhr.onreadystatechange = function () { if (xhr.readyState === 4) { alert(xhr.responseText); } };
服务响应出错了,但还是返回了信息,这并不是我们想要的结果
如果返回不是200,而是404或者500,由于只使用readystate做判断,它不理会放回的结果是200、404还是500,只要响应成功返回了,就执行接下来的javascript代码,结果将造成各种不可预料的错误。所以只使用readyState判断是行不通的。
第二种思考方式:只使用status判断
var getXmlHttpRequest = function () { try{ return new XMLHttpRequest(); }catch(e){ return new ActiveXObject("Microsoft.XMLHTTP"); } }; var xhr = getXmlHttpRequest(); xhr.open("get", "1.txt", true); xhr.send(); xhr.onreadystatechange = function () { if (xhr.status === 200) { alert("readyState=" + xhr.readyState + xhr.responseText); } };
事实上,结果却不像预期那样。响应码确实是返回了200,但是总共弹出了3次窗口!第一次是“readyState=2”的窗口,第二次是“readyState=3”的窗口,第三次是“readyState=4”的窗口。由此,可见onreadystatechange函数的执行不是只在readyState变为4的时候触发的,而是readyState(2、3、4)的每次变化都会触发,所以就出现了前面说的那种情况。可见,单独使用status判断也是行不通的。
5.由上面的试验,我们可以知道判断的时候readyState和status缺一不可。那么readyState和status的先后判断顺序会不会有影响呢?我们可以将status调到前面先判断,代码如 xhr.status === 200 && xhr.readyState === 4
事实上,这对于最终的结果是没有影响的,但是中间的性能就不同了。由试验我们知道,readyState的每次变化都会触发onreadystatechange函数,假如先判断status,那么每次都会多判断一次status的状态。虽然性能上影响甚微,不过还是应该抱着追求极致代码的想法,把readyState的判断放在前面。
xhr.readyState === 4 && xhr.status === 200
上面是我整理给大家的,希望今后会对大家有帮助。
相关文章:
以上がAjax のreadyState とステータスに関連する問題について話し合うの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

node.jsは、主にストリームのおかげで、効率的なI/Oで優れています。 ストリームはデータを段階的に処理し、メモリの過負荷を回避します。大きなファイル、ネットワークタスク、リアルタイムアプリケーションの場合。ストリームとTypeScriptのタイプの安全性を組み合わせることで、パワーが作成されます

PythonとJavaScriptのパフォーマンスと効率の違いは、主に以下に反映されています。1)解釈された言語として、Pythonはゆっくりと実行されますが、開発効率が高く、迅速なプロトタイプ開発に適しています。 2)JavaScriptはブラウザ内の単一のスレッドに限定されていますが、マルチスレッドおよび非同期I/Oを使用してnode.jsのパフォーマンスを改善でき、両方とも実際のプロジェクトで利点があります。

JavaScriptは1995年に発信され、Brandon Ikeによって作成され、言語をCに実現しました。 2。JavaScriptのメモリ管理とパフォーマンスの最適化は、C言語に依存しています。 3. C言語のクロスプラットフォーム機能は、さまざまなオペレーティングシステムでJavaScriptを効率的に実行するのに役立ちます。

JavaScriptはブラウザとnode.js環境で実行され、JavaScriptエンジンに依存してコードを解析および実行します。 1)解析段階で抽象的構文ツリー(AST)を生成します。 2)ASTをコンパイル段階のバイトコードまたはマシンコードに変換します。 3)実行段階でコンパイルされたコードを実行します。

PythonとJavaScriptの将来の傾向には、1。Pythonが科学コンピューティングの分野での位置を統合し、AI、2。JavaScriptはWebテクノロジーの開発を促進します。どちらもそれぞれのフィールドでアプリケーションシナリオを拡大し続け、パフォーマンスをより多くのブレークスルーを行います。

開発環境におけるPythonとJavaScriptの両方の選択が重要です。 1)Pythonの開発環境には、Pycharm、Jupyternotebook、Anacondaが含まれます。これらは、データサイエンスと迅速なプロトタイピングに適しています。 2)JavaScriptの開発環境には、フロントエンドおよびバックエンド開発に適したnode.js、vscode、およびwebpackが含まれます。プロジェクトのニーズに応じて適切なツールを選択すると、開発効率とプロジェクトの成功率が向上する可能性があります。

はい、JavaScriptのエンジンコアはCで記述されています。1)C言語は、JavaScriptエンジンの開発に適した効率的なパフォーマンスと基礎となる制御を提供します。 2)V8エンジンを例にとると、そのコアはCで記述され、Cの効率とオブジェクト指向の特性を組み合わせて書かれています。3)JavaScriptエンジンの作業原理には、解析、コンパイル、実行が含まれ、C言語はこれらのプロセスで重要な役割を果たします。

JavaScriptは、Webページのインタラクティブ性とダイナミズムを向上させるため、現代のWebサイトの中心にあります。 1)ページを更新せずにコンテンツを変更できます。2)Domapiを介してWebページを操作する、3)アニメーションやドラッグアンドドロップなどの複雑なインタラクティブ効果、4)ユーザーエクスペリエンスを改善するためのパフォーマンスとベストプラクティスを最適化します。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

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

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

ホットトピック









