>웹 프론트엔드 >프런트엔드 Q&A >아약스 오류의 원인은 무엇입니까?

아약스 오류의 원인은 무엇입니까?

青灯夜游
青灯夜游원래의
2022-01-19 14:47:1415621검색

Ajax 오류의 원인: 1. 잘못된 데이터 유형 유형, 2. 잘못된 json 형식, 3. 비동기 요청의 동기 및 비동기 설정에 문제가 있습니다. 4. 데이터 매개변수 값이 설정되지 않았습니다. 6. URL 경로에 한자 등이 있습니다.

아약스 오류의 원인은 무엇입니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, jquery 버전 1.10.2, Dell G3 컴퓨터.

표준 jquery ajax 코드:

$.ajax({
         type: 'POST',
         url: 'getSecondClassification',
         data: {"sort2": sort2,"sort3":sort3)},
         dataType: 'json',
  //contentType:"utf-8",发送请求的编码方式
  //contentType都是默认的值:application/x-www-form-urlencoded
 
  contentType: 'application/json',
  data: JSON.stringify({a: [{b:1, a:1}]})
 
  success: function (sort) {
    $("#noneSelect").remove();
    var optionstring = "";
    for (var i in sort) {
                     optionstring += "<option value=\"" + sort[i].classId + "\" >" + sort[i].className + "</option>";
               }
               $("#secondtype").html(optionstring);
    $("#build").removeAttr("disabled");
  },
 error: function (XMLHttpRequest, textStatus, errorThrown) {
    //              $("#p_test").innerHTML = "there is something wrong!";
    //                alert(XMLHttpRequest.status);
    //                alert(XMLHttpRequest.readyState);
    //                alert(textStatus);
         }
   });

모든 오류는 오류 함수로 이동합니다.

일부 오류 이유의 예:

1. 데이터 유형 오류: 배경 반환된 경우 dataType 유형이 프런트엔드에 작성된 것과 일치하지 않으면 오류가 형식 오류로 이동합니다. jquery1.4에는 json에 대한 형식 요구 사항이 매우 엄격하며 json 형식 오류도 {"test":1} 오류로 이동합니다. 형식에 주의하세요

때로는 값을 반환할 필요가 없는 경우 템플릿 형식을 사용하고 dataType: "json" 매개변수가 설정됩니다. 이때 ajax 값이 올바르게 전송되면 특별한 상황이 발생합니다. 200 반환 성공 상태에서 오류가 보고되는 경우에 발생합니다.

2. 비동기 요청 동기화 및 비동기 문제

비동기는 하나의 Ajax가 실행된 후 다른 Ajax를 실행하려면 async=false를 설정해야 합니다. post 요청을 사용하여 다른 페이지의 백그라운드로 값을 전달했지만 페이지가 로드되자마자 이미 ajax가 실행되었습니다. 이때는 백그라운드에서만 값 수신이 완료되므로 데이터를 요청할 수 없습니다. ajax 요청을 동기식 try로 변경하는 것을 고려할 수 있습니다.

3. 데이터를 작성해야 합니다

데이터가 비어 있으면 "{}"를 전달해야 합니다. 그렇지 않으면 반환되는 데이터는 xml 형식이 됩니다. 그리고parsererror.data:"{}" 메시지가 표시됩니다.parsererror의 예외는 헤더 유형과도 관련이 있습니다. 및 인코딩 헤더('Content-type: text/html;

charset=utf8

');4. 전달된 매개변수

ajax

5에서 지원하는 인코딩 형식이어야 합니다. 경로에 중국어 문자를 사용할 수 없습니다.

오류를 사용하여 오류 메시지를 디버그하세요.

무엇이 잘못되었는지 경고할 수 있습니다.

특정 매개변수:

XMLHttpRequest:XMLHttpRequest.readyState: 状态码的意思
0 - (未初始化)还没有调用send()方法
1 - (载入)已调用send()方法,正在发送请求
2 - (载入完成)send()方法执行完成,已经接收到全部响应内容
3 - (交互)正在解析响应内容
4 - (完成)响应内容解析完成,可以在客户端调用了

XMLHttpRequest: XMLHttpRequest.status:

textStatus: 오류 이유

errorThrown: (선택 사항) 캡처된 오류 개체

[관련 튜토리얼 권장 사항:

AJAX 비디오 튜토리얼

]

위 내용은 아약스 오류의 원인은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.