이번에는 jQuery AJAX 시간 초과 응급 처리 방법을 소개해 드리겠습니다. jQuery AJAX 시간 초과 응급 처리의 주의 사항은 무엇이며, 다음은 실제 사례입니다. 살펴보겠습니다.
먼저 시간 초과 이유를 분석하겠습니다.
1. 네트워크가 원활하지 않습니다.
2. 백그라운드 작업이 상대적으로 느립니다. (서버가 처음 실행될 때 발생하기 쉽습니다.)
Timeout 결과: JQ의 timeout은 요청 시간 초과를 설정합니다.
서버 응답 시간이 설정된 시간을 초과하면 ERROR가 발생합니다(오류 처리)
시간 초과 해결 방법:
1. 기본 시간 초과는 0이므로 시간 초과가 발생하지 않습니다
2. 최선을 다해 보세요. 제한 시간을 더 크게 설정하세요. 단점: 데이터 로딩 속도가 느려집니다. (그렇죠. 하하.)
3. ERROR콜백 함수에 타임아웃 처리에 관한 함수를 작성하세요. 예를 들어 타임아웃이 발생하면 데이터 가져오기 함수를 다시 호출할 수 있습니다.
-------------------------------------- ------------------------------------- ----- ------------
이 ajax에는 성공을 반환하는 성공 함수가 있고 error라는 반환 함수도 있습니다.
이 함수는 요청이 있을 경우 실행됩니다.
오류로 처리하시면 될 것 같습니다.
이 함수가 실행되면 두 번째 ajax 메소드를 호출하게 됩니다.
jQuery 및 ExtJS의 timeOut 시간 초과 설정 및 이벤트 이벤트 처리.
jQuery 및 ExtJS timeOut 시간 초과 설정 및 이벤트 이벤트 처리.
Ajax 요청의 시간 초과 기간을 사용자 정의하고 해당 시간 초과 이벤트를 처리하는 방법은 무엇입니까?
jQuery의 경우 타임아웃은 타임아웃 매개변수를 직접 설정하고 오류 이벤트의 두 번째 매개변수를 캡처할 수 있습니다. "타임아웃"이면 타임아웃 이벤트가 캡처된다는 의미이므로 매우 명확합니다.
예:
$.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 - 정보 프롬프트
이것 상태 코드는 임시 응답을 나타냅니다. 클라이언트는 일반 응답을 받기 전에 하나 이상의 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 – 웹 서버의 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 - 요청한 포트에서 웹사이트에 접근할 수 없습니다.
404.2 - 웹 서비스 확장 잠금 정책으로 인해 이 요청이 차단됩니다.
404.3-MIME 매핑 정책이 이 요청을 차단합니다.
405 - 이 페이지에 액세스하는 데 사용된 HTTP 동사는 허용되지 않습니다(메서드는 허용되지 않음).
406 - 클라이언트 브라우저가 요청된 페이지의 MIME 유형을 허용하지 않습니다.
407 - 프록시 인증이 필요합니다.
412-전제조건이 실패했습니다.
413 – 요청 엔터티가 너무 큽니다.
414-요청 URI가 너무 깁니다.
415 – 지원되지 않는 미디어 유형입니다.
416 – 요청한 범위를 충족할 수 없습니다.
417 – 실행에 실패했습니다.
423 – 잠긴 오류.
5xx - 서버 오류
서버에 오류가 발생하여 요청을 완료할 수 없습니다.
500 - 내부 서버 오류입니다.
500.12 - 웹 서버에서 애플리케이션을 다시 시작하는 중입니다.
500.13 - 웹 서버가 너무 바쁩니다.
500.15 - Global.asa에 대한 직접 요청은 허용되지 않습니다.
500.16 – UNC 인증 자격 증명이 잘못되었습니다. 이 오류 코드는 IIS6.0에만 해당됩니다.
500.18 – URL 인증 저장소를 열 수 없습니다. 이 오류 코드는 IIS6.0에만 해당됩니다.
500.100 - 내부 ASP 오류.
501 - 헤더 값이 구현되지 않은 구성을 지정합니다.
502 - 웹 서버가 게이트웨이 또는 프록시 서버로 작동하는 동안 잘못된 응답을 받았습니다.
502.1-CGI 애플리케이션 시간이 초과되었습니다.
502.2-CGI 응용 프로그램 오류. 신청하세요.
503 - 서비스를 이용할 수 없습니다. 이 오류 코드는 IIS6.0에만 해당됩니다.
504-게이트웨이 시간 초과.
505-HTTP 버전은 지원되지 않습니다.
FTP
1xx - 긍정적인 초기 응답
이 상태 코드는 작업이 성공적으로 시작되었지만 클라이언트가 새 명령을 진행하기 전에 또 다른 응답을 원한다는 것을 나타냅니다.
110 마크 답장을 다시 시작하세요.
서비스 120이 준비되었으며 nnn분 후에 시작됩니다.
125 데이터 연결이 열려 전송이 시작됩니다.
150개 파일 상태는 정상이며 데이터 연결을 오픈할 준비가 되어 있습니다.
2xx - 긍정적인 완료 답변
작업이 성공적으로 완료되었습니다. 클라이언트는 새로운 명령을 실행할 수 있습니다. 200 명령이 맞습니다.
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는 두 개의 포트를 사용합니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!