今回は、jQuery AJAX タイムアウトの緊急処理方法をお届けします。jQuery AJAX タイムアウトの緊急処理の 注意事項 は何ですか。以下は実際的なケースです。見てみましょう。
まずタイムアウトの理由を分析してみましょう:
1. ネットワークがスムーズではありません。
2. バックグラウンド動作は比較的遅い (サーバーを初めて実行するときに発生しやすい)
タイムアウト結果: JQ のタイムアウトはリクエストのタイムアウトを設定します。
サーバーの応答時間が設定時間を超えると、エラー (エラー処理) になります
タイムアウト解決策:
1 デフォルトのタイムアウトは 0 で、タイムアウトしないことを意味します
2。あなたのベスト タイムアウトを大きく設定してください。欠点: データの読み込みが遅くなります (一見、笑)。
3. ERRORコールバック関数にタイムアウト処理に関する関数を記述します: たとえば、タイムアウトの場合にデータ取得関数を再度呼び出すことができます。
------------------------------------------------ -------------------------------------------------- ----- ------------
この ajax には success 関数があり、success を返しますが、error という戻り関数もあります
この関数はリクエストがあった場合にトリガーされます。
エラーでも対処できると思います。
この関数が実行されると、2番目のajaxメソッドを呼び出します。
jQueryとExtJSのtimeOutタイムアウト設定とイベント処理
jQueryとExtJSのtimeOutタイムアウト設定とイベント イベント処理
Ajax リクエストのタイムアウト期間をカスタマイズし、対応するタイムアウト イベントを処理するにはどうすればよいですか?
jQuery の場合、タイムアウトはタイムアウト パラメーターを直接設定し、エラー イベントの 2 番目のパラメーターをキャプチャできます。これは、タイムアウト イベントがキャプチャされたことを意味します。これは非常に明確です。
例:
$.ajax({ type: "POST" , contentType: "application/json" , url: "../ws/MyService.asmx/test" , data: '{"email":"' +email+'"}' , timeout: 30000, //超时时间:30秒 dataType: 'json' , error: function (XMLHttpRequest, textStatus, errorThrown){ //TODO: 处理status, http status code,超时 408 // 注意:如果发生了错误,错误信息(第二个参数)除了得到null之外,还可能 //是"timeout", "error", "notmodified" 和 "parsererror"。 }, success: function (result) { // TODO: check result } });
さらに、エラー イベントによって返される最初のパラメーター XMLHttpRequest には、いくつかの有用な情報が含まれています:
XMLHttpRequest.readyState: ステータス コード
0 - (初期化されていない) send() メソッドはまだ呼び出されていません
1 - (ロード中) send() メソッドが呼び出され、リクエストが送信されています
2 - (ロード完了) send() メソッドが実行され、すべての応答コンテンツが受信されました
3 - (インタラクション) 応答コンテンツを解析中です
4 - (完了) 応答コンテンツの解析が完了し、クライアントで呼び出すことができます
XMLHttpRequest.status 属性: いくつかのエラー コード
HTTP
1xx - 情報プロンプト
ステータス コードは一時的な応答を表します。クライアントは、通常の応答を受信する前に、1 つ以上の 1xx 応答を受信できるように準備する必要があります。
100-継続。
101-スイッチプロトコル。
2xx - 成功
このタイプのステータス コードは、サーバーがクライアント要求を正常に受け入れたことを示します。
200-OK。クライアントのリクエストは成功しました。
201-作成。
202-承認されました。
203 - 権威のない情報。
204 - コンテンツがありません。
205-コンテンツをリセットします。
206-コンテンツの一部。
3xx - リダイレクト
クライアントのブラウザは、リクエストを満たすためにさらにアクションを実行する必要があります。たとえば、ブラウザはサーバー上の別のページをリクエストしたり、プロキシ サーバー経由でリクエストを繰り返したりする必要がある場合があります。
301 - オブジェクトは永続的に移動されました、つまり、永続的にリダイレクトされました。
302 - オブジェクトは一時的に移動されました。
304-無修正。
307 - 一時的なリダイレクト。
4xx - クライアントエラー
エラーが発生しました。クライアントに問題があるようです。たとえば、クライアントが存在しないページを要求し、クライアントが有効な認証情報を提供しなかったとします。 400不正な要求。
401 - アクセスが拒否されました。 IIS では、より具体的なエラー原因を示すさまざまな 401 エラーが定義されています。これらの特定のエラー コードはブラウザーには表示されますが、IIS ログには表示されません:
401.1 - ログインに失敗しました。
401.2 - サーバー設定によりログインが失敗しました。
401.3 - リソースに対する ACL 制限により許可されません。
401.4 - フィルターの承認に失敗しました。
401.5-ISAPI/CGI アプリケーションの認証に失敗しました。
401.7 – Web サーバー上の URL 承認ポリシーによってアクセスが拒否されます。このエラー コードは IIS6.0 に固有です。
403 - 禁止: IIS は、より具体的なエラー原因を示すさまざまな 403 エラーを定義します。
403.1 - 実行アクセスは禁止されています。
403.2 - 読み取りアクセスは禁止されています。
403.3 - 書き込みアクセスは禁止されています。
403.4 - SSL が必要です。
403.5 - SSL128 が必要です。
403.6 - IP アドレスが拒否されました。
403.7 - クライアント証明書が必要です。
403.8 - サイトへのアクセスが拒否されました。
403.9 - ユーザーが多すぎます。
403.10 - 構成が無効です。
403.11 - パスワードの変更。
403.12 - マッピング テーブルへのアクセスが拒否されました。
403.13 - クライアント証明書が取り消されました。
403.14 - ディレクトリのリストが拒否されました。
403.15 - クライアントのアクセス許可を超えました。
403.16 - クライアント証明書が信頼されていないか、無効です。
403.17 - クライアント証明書の有効期限が切れているか、まだ有効ではありません。
403.18 - 要求された URL は現在のアプリケーション プールでは実行できません。このエラー コードは IIS6.0 に固有です。
403.19 - このアプリケーション プール内のクライアントに対して CGI を実行できません。このエラー コードは IIS6.0 に固有です。
403.20 - パスポートのログインに失敗しました。このエラー コードは IIS6.0 に固有です。
404 - 見つかりません。
404.0-(なし) – ファイルまたはディレクトリが見つかりません。
404.1 - 要求されたポートでは Web サイトにアクセスできません。
404.2 - Web サービス拡張ロック ポリシーにより、このリクエストはブロックされます。
404.3-MIME マッピング ポリシーはこのリクエストをブロックします。
405 - このページへのアクセスに使用される HTTP 動詞は許可されていません (メソッドが許可されていません)
406 - クライアントのブラウザは、要求されたページの MIME タイプを受け入れません。
407 - プロキシ認証が必要です。
412 - 前提条件が失敗しました。
413 – リクエスト エンティティが大きすぎます。
414 - リクエスト URI が長すぎます。
415 – サポートされていないメディア タイプです。
416 – 要求された範囲を満たすことができません。
417 – 実行に失敗しました。
423 – ロックされたエラー。
5xx - サーバー エラー
サーバーはエラーが発生したため、リクエストを完了できませんでした。
500 - 内部サーバーエラー。
500.12 - アプリケーションは Web サーバー上で再起動中でビジー状態です。
500.13 - Web サーバーがビジー状態です。
500.15 - Global.asa への直接リクエストは許可されません。
500.16 – UNC 認証資格情報が正しくありません。このエラー コードは IIS6.0 に固有です。
500.18 – URL 認証ストレージを開けません。このエラー コードは IIS6.0 に固有です。
500.100 - 内部 ASP エラー。
501 - ヘッダー値は未実装の構成を指定します。
502 - Web サーバーがゲートウェイまたはプロキシ サーバーとして機能しているときに無効な応答を受信しました。
502.1-CGI アプリケーションがタイムアウトしました。
502.2-CGI アプリケーション エラー。 application.
503 - サービスが利用できません。このエラー コードは IIS6.0 に固有です。
504 - ゲートウェイのタイムアウト。
505-HTTP バージョンはサポートされていません。
FTP
1xx - 肯定的な初期応答
これらのステータス コードは、操作が正常に開始されたが、クライアントが新しいコマンドを続行する前に別の応答を必要としていることを示します。
110 再起動マーク返信。
サービス 120 の準備が整い、nnn 分後に開始されます。
125 データ接続が開いており、転送が開始されています。
150 ファイルのステータスは正常で、データ接続を開く準備ができています。
2xx - 肯定的な完了応答
操作は正常に完了しました。クライアントは新しいコマンドを実行できます。 200コマンドOK。
202 コマンドが実行されませんでした。サイト上のコマンドが多すぎます。
211 システムステータス、またはシステムヘルプの応答。
212 ディレクトリのステータス。
213 ファイルのステータス。
214 ヘルプ メッセージ。
215NAME システム タイプ。NAME は、AssignedNumbers ドキュメントにリストされている正式なシステム名です。
220 サービスは新しいユーザーのリクエストを実行する準備ができています。
221 サービスが制御接続を閉じました。必要に応じて、ログアウトします。
225 データ接続がオープンしていますが、転送は進行中ではありません。
226 データ接続を閉じます。要求されたファイル操作は成功しました (ファイルの転送やファイルの破棄など)。
227 はパッシブモード (h1、h2、h3、h4、p1、p2) に入ります。
230 ユーザーがログインしました。続行します。
250 要求されたファイル操作は正しく、完了しました。
257 が「PATHNAME」を作成しました。
3xx - 肯定的な中間応答
コマンドは成功しましたが、サーバーはリクエストの処理を完了するためにクライアントからの追加情報を必要とします。 331 ユーザー名は正しいため、パスワードが必要です。
332にはログインアカウントが必要です。
350 要求されたファイル操作は詳細情報を保留しています。
4xx - 一時的な否定的な完了応答
コマンドは失敗しましたが、エラーは一時的なものです。クライアントがコマンドを再試行すると、成功する可能性があります。 421 サービスを利用できません。制御接続を閉じています。サービスがシャットダウンする必要があると判断した場合、この応答は任意のコマンドに送信されます。
425 データ接続を開けません。
426Connectionclosed;transferaborted.
450 要求されたファイル操作は実行されませんでした。ファイルは使用できません (たとえば、ファイルがビジー状態です)。
451 要求された操作が異常終了しました: ローカル エラーが処理されています。
452 要求された操作は実行されませんでした。十分なシステムストレージ容量がありません。
5xx - 永続的な否定完了応答
コマンドは失敗し、エラーは永続的です。クライアントがコマンドを再試行すると、同じエラーが再度表示されます。 500構文エラー、コマンドが認識されません。これには、コマンド ラインが長すぎるなどのエラーが含まれる場合があります。
501 パラメータに構文エラーがあります。
502 コマンドが実行されませんでした。
503 コマンドシーケンスが不正です。
504 このパラメータを指定したコマンドは実行されませんでした。
530はログインしていません。
532 ファイルを保存するにはアカウントが必要です。
550 要求された操作は実行されませんでした。ファイルが利用できません (例: ファイルが見つからない、アクセス権がない)。
551 要求された操作は異常終了しました: 不明なページ タイプ。
552 要求されたファイル操作が異常終了しました: (現在のディレクトリまたはデータセットの) ストレージ割り当てを超過しました。
553 要求された操作は実行されませんでした。ファイル名は許可されません。
一般的な FTP ステータス コードとその原因
150 - FTP は 2 つのポートを使用します: 21 はコマンドの送信に、20 はデータの送信に使用されます。ステータス コード 150 は、サーバーがデータを送信するためにポート 20 で新しい接続を開く準備をしていることを意味します。
226 - コマンドはポート 20 でデータ接続を開き、ファイル転送などの操作を実行します。操作は正常に完了し、データ接続が閉じられました。
230 - このステータス コードは、クライアントが正しいパスワードを送信した後に表示されます。これは、ユーザーが正常にログインしたことを意味します。
331 - このステータス コードは、クライアントがユーザー名を送信した後に表示されます。このステータス コードは、指定されたユーザー名がシステム上の有効なアカウントであるかどうかに関係なく表示されます。
426 - コマンドは操作を実行するためにデータ接続を開きましたが、操作はキャンセルされ、データ接続が閉じられました。
530 - このステータス コードは、ユーザー名とパスワードの組み合わせが無効であるため、ユーザーがログインできないことを意味します。ユーザー アカウントでログインしている場合は、間違ったユーザー名またはパスワードを入力したか、匿名アクセスのみを許可することを選択した可能性があります。匿名アカウントを使用してログインした場合、IIS は匿名アクセスを拒否するように構成されている可能性があります。
550-命令未被执行,因为指定的文件不可用。例如,要GET的文件并不存在,或试图将文件PUT到您没有写入权限的目录。
ExtJS 的默认超时时间是30s,超过就会ajax请求失败,http status code 408。
设置ExtJS的超时时间方法需要用Ext.data.Connection 对象,并捕捉requestexception事件,例子:
var conn=new Ext.data.Connection({ url: "../ws/MyService.asmx/test" , timeout : 60000, //自定义超时时间,这里是60秒 (默认30s) autoAbort : false , disableCaching : true , method : "GET" }); var proxy = new Ext.data.HttpProxy(conn); proxy.getConnection().on("requestcomplete" , function (sender, response, options){ //成功,response.status = 200, response.statusText = 'OK' }); proxy.getConnection().on("requestexception" , function (sender, response, options){ //异常,捕捉 esponse.status ( http status code 代码 )和 response.statusText }); var store = new Ext.data.Store({ proxy: proxy, reader: myReader, //需要另外定义一个reader baseParams: {myargument:'myargumentValue' }, //改成你的参数名和值 remoteSort: false }); store.load();
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
以上がjQuery AJAXタイムアウトタイムアウト緊急対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。