본문 바로가기

JS/Ajax

ajax error jqXHR.status===0

웹앱에서 ajax로 보낸 데이터를 리눅스 서버의 php파일에서 받고 SQL Query를 써서 DB에 저장하는 단순한 코드가 에러가 났다.

값을 입력 후 보내면 클라이언트 쪽에서 success가 아닌 error가 떴다.


ajax를 쓴 뒤에 success가 되면 location.replace()로 페이지를 이동시키는 코드를 썼는데 이게 문제였다.


일단 error문구와 상태를 확인하려면 아래처럼 작성한다. 상태 번호에 따라 어떤 것이 문제인지 알려준다.

status===0에서 알림이 떴으므로 구글링했다.


ajax 응답을 받기도 전에 페이지를 이동 or 새로고침하게 되면 나타날 수도 있다. 그리고 ajax 호출은 취소된다.


뭐가 문제인지 알았으니 success에서 location.replace()함수를 지우고 다른 방법을 생각한다. success 말고 complete라는 애를 써야 한다.

완료가 된 뒤에 동작할 것은 complete에 쓰면 된다.

1
2
3
complete:function(){
            location.replace('workSettingPage.html');
        }
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
var finish=function(){
    ///운동 종료 시 지금까지의 데이터 서버로 전송.    
    alert('finish 호출');
    $.ajax({
        type:'post',
        dataType:'json',
        url:'http://IP/records/intensityUp.php',
        data:{
            sets:cur_sets
            /*sets:cur_sets,
            reps:cur_reps,
            rest_time:cur_rest_time*/
        },
        success:function(json){
            if(json.res=='good'){
                location.replace('workSettingPage.html');
            }else{
                alert('DB 서버 오류');
            }
        },
        error:function (jqXHR, exception) {
            var msg = '';
            if (jqXHR.status === 0) {
                msg = 'Not connect.\n Verify Network.';
            } else if (jqXHR.status == 404) {
                msg = 'Requested page not found. [404]';
            } else if (jqXHR.status == 500) {
                msg = 'Internal Server Error [500].';
            } else if (exception === 'parsererror') {
                msg = 'Requested JSON parse failed.';
            } else if (exception === 'timeout') {
                msg = 'Time out error.';
            } else if (exception === 'abort') {
                msg = 'Ajax request aborted.';
            } else {
                msg = 'Uncaught Error.\n' + jqXHR.responseText;
            }
            alert(msg);
        }
    })
};
cs

https://stackoverflow.com/questions/18997341/ajax-error-function-is-not-working



https://stackoverflow.com/questions/2000609/jquery-ajax-status-code-0

1
2
3
Another case:
 
It could be possible to get a status code of 0 if you have sent an AJAX call and a refresh of the browser was triggered before getting the AJAX response.
The AJAX call will be cancelled and you will get this status.
cs


'JS > Ajax' 카테고리의 다른 글

js, html  (0) 2018.03.01
Ajax로 로그인 성공하면 폰에 있는 html 파일 켜기  (0) 2018.02.28
Ajax 간략  (0) 2018.02.13