복붙노트

[JQUERY] 아약스 요청은 200 OK를 반환하지만 오류 이벤트가 대신 성공 해고

JQUERY

아약스 요청은 200 OK를 반환하지만 오류 이벤트가 대신 성공 해고

해결법


  1. 1.jQuery.ajax 시도는 지정된 데이터 형식 매개 변수 또는 서버에서 전송되는 컨텐츠 유형 헤더에 따라 응답 본문을 변환합니다. 변환합니다 (JSON / XML이 유효 예를 들어, 경우)에 실패 할 경우, 오류 콜백이 발생합니다.

    jQuery.ajax 시도는 지정된 데이터 형식 매개 변수 또는 서버에서 전송되는 컨텐츠 유형 헤더에 따라 응답 본문을 변환합니다. 변환합니다 (JSON / XML이 유효 예를 들어, 경우)에 실패 할 경우, 오류 콜백이 발생합니다.

    귀하의 AJAX 코드가 포함되어 있습니다 :

    dataType: "json"
    

    이 경우 jQuery를에 :

    200 개 OK 상태와 서버 측 코드를 반환 HTML 코드 조각. jQuery를 유효 JSON을 기대하기 때문에 parseerror에 대해 불평 오류 콜백을 발사했다.

    이 솔루션은 사용자의 jQuery 코드에서 데이터 유형 매개 변수를 제거하고 서버 측 코드를 반환하는 것입니다 :

    Content-Type: application/javascript
    
    alert("Record Deleted");
    

    그러나 나는 오히려 JSON 응답을 반환 제안하고 성공 콜백 내부의 메시지를 표시합니다 :

    Content-Type: application/json
    
    {"message": "Record deleted"}
    

  2. 2.여러 개의 공간으로 구분있는 dataType (jQuery를 1.5 이상)를 사용하여 몇 가지 행운을 했어. 마찬가지로 :

    여러 개의 공간으로 구분있는 dataType (jQuery를 1.5 이상)를 사용하여 몇 가지 행운을 했어. 마찬가지로 :

    $.ajax({
        type: 'POST',
        url: 'Jqueryoperation.aspx?Operation=DeleteRow',
        contentType: 'application/json; charset=utf-8',
        data: json,
        dataType: 'text json',
        cache: false,
        success: AjaxSucceeded,
        error: AjaxFailed
    });
    

  3. 3.당신의 AJAX 호출에서 "JSON"당신은 단순히 데이터 유형을 제거해야

    당신의 AJAX 호출에서 "JSON"당신은 단순히 데이터 유형을 제거해야

    $.ajax({
        type: 'POST',
        url: 'Jqueryoperation.aspx?Operation=DeleteRow',
        contentType: 'application/json; charset=utf-8',
        data: json,
        dataType: 'json', //**** REMOVE THIS LINE ****//
        cache: false,
        success: AjaxSucceeded,
        error: AjaxFailed
    });
    

  4. 4.이 단지 OP의 유사했다 내 문제에 대한 해결책을 찾을 때 나는이 게시물에 충돌 이후 기록입니다.

    이 단지 OP의 유사했다 내 문제에 대한 해결책을 찾을 때 나는이 게시물에 충돌 이후 기록입니다.

    내 경우에는 내 jQuery를 Ajax 요청으로 인해 크롬에서 동일 출처 정책에 성공 방지했다. 나는 내 서버 (Node.js를가) 할 수정하면 모두 해결되었다 :

    response.writeHead(200,
              {
                "Content-Type": "application/json",
                "Access-Control-Allow-Origin": "http://localhost:8080"
            });
    

    말 그대로 나에게 벽에 내 머리를 두드리는의 시간을 요했다. 나는 바보 느끼고 ...


  5. 5.나는 당신의 aspx 페이지는 JSON 객체를 반환하지 않습니다 생각한다. 귀하의 페이지에 이런 식으로 뭔가를해야 (를 Page_Load)

    나는 당신의 aspx 페이지는 JSON 객체를 반환하지 않습니다 생각한다. 귀하의 페이지에 이런 식으로 뭔가를해야 (를 Page_Load)

    var jSon = new JavaScriptSerializer();
    var OutPut = jSon.Serialize(<your object>);
    
    Response.Write(OutPut);
    

    또한, 귀하의 AjaxFailed을 변경하려고 :

    function AjaxFailed (XMLHttpRequest, textStatus) {
    
    }
    

    textStatus 당신이 얻고있는 오류의 유형을 제공해야합니다.


  6. 6.나는 업데이트 된 jQuery 라이브러리와 함께이 문제를 직면했다. 서비스 방법은 아무것도 반환하지 않는 경우는 반환 타입은 void라는 것을 의미한다.

    나는 업데이트 된 jQuery 라이브러리와 함께이 문제를 직면했다. 서비스 방법은 아무것도 반환하지 않는 경우는 반환 타입은 void라는 것을 의미한다.

    그런 다음 Ajax 호출에 dataType와 = '텍스트'를 언급 해주십시오.

    이 문제를 해결합니다.


  7. 7.당신은 데이터 유형을 제거해야합니다 : 헤더에서 'JSON'을 당신의 구현 웹 서비스 메서드가 무효 인 경우.

    당신은 데이터 유형을 제거해야합니다 : 헤더에서 'JSON'을 당신의 구현 웹 서비스 메서드가 무효 인 경우.

    이 경우, Ajax 호출은 JSON 리턴 데이터 유형을 가지고 기대하지 않습니다.


  8. 8.응답이 JSON 형식 (PHP 버전)에서 확인하기 위해 다음 코드를 사용하여 ...

    응답이 JSON 형식 (PHP 버전)에서 확인하기 위해 다음 코드를 사용하여 ...

    header('Content-Type: application/json');
    echo json_encode($return_vars);
    exit;
    

  9. 9.저도 같은 문제를 가지고 있었다. 내 문제는 내 컨트롤러 대신 JSON의 상태 코드를 반환 하였다. 확인 컨트롤러가 같은 것을 반환합니다 :

    저도 같은 문제를 가지고 있었다. 내 문제는 내 컨트롤러 대신 JSON의 상태 코드를 반환 하였다. 확인 컨트롤러가 같은 것을 반환합니다 :

    public JsonResult ActionName(){
       // Your code
       return Json(new { });
    }
    

  10. 10.'JSON'나는 데이터 유형을 제거하려고 할 때 나는 비슷한 문제를 가지고 있지만, 난 여전히 문제가 있습니다. 내 오류가 성공 대신 실행

    'JSON'나는 데이터 유형을 제거하려고 할 때 나는 비슷한 문제를 가지고 있지만, 난 여전히 문제가 있습니다. 내 오류가 성공 대신 실행

    function cmd(){
        var data = JSON.stringify(display1());
        $.ajax({
            type: 'POST',
            url: '/cmd',
            contentType:'application/json; charset=utf-8',
            //dataType:"json",
            data: data,
            success: function(res){
                      console.log('Success in running run_id ajax')
                      //$.ajax({
                       //   type: "GET",
                       //   url: "/runid",
                       //   contentType:"application/json; charset=utf-8",
                       //   dataType:"json",
                       //   data: data,
                       //  success:function display_runid(){}
                      // });
            },
            error: function(req, err){ console.log('my message: ' + err); }
        });
    }
    

  11. 11.나를 위해 엉망 일까지이 반대하는 대신 127.0.0.1 또는 그의 localhost를 사용하는 것을 또 다른 것은. 분명히, 자바 스크립트는 하나에서 다른 요청을 처리 할 수 ​​없습니다.

    나를 위해 엉망 일까지이 반대하는 대신 127.0.0.1 또는 그의 localhost를 사용하는 것을 또 다른 것은. 분명히, 자바 스크립트는 하나에서 다른 요청을 처리 할 수 ​​없습니다.


  12. 12.이것 좀 봐. 그 또한 비슷한 문제. 근무 내가 시도했다.

    이것 좀 봐. 그 또한 비슷한 문제. 근무 내가 시도했다.

    그나마 제거 dataType와 'JSON'

    참고 : 당신은 단지 PHP는 에코 아약스 코드 반환을 사용하는 경우 PHP 파일 만 JSON 형식 에코 (200)


  13. 13.저도 같은 문제가 있었다. 내 JSON 응답은 일부 특수 문자를 포함하고 Ajax 호출이 유효한 JSON 응답 아니라고 생각 있도록 서버 파일이 UTF-8로 인코딩되지 않은 때문이었다.

    저도 같은 문제가 있었다. 내 JSON 응답은 일부 특수 문자를 포함하고 Ajax 호출이 유효한 JSON 응답 아니라고 생각 있도록 서버 파일이 UTF-8로 인코딩되지 않은 때문이었다.


  14. 14.당신은 항상 서버 (NO 빈 응답)에서 JSON을 반환하는 경우, 데이터 형식 : 'JSON은'작동해야하고 contentType이 필요하지 않습니다. 그러나 확인 JSON 출력을 ...

    당신은 항상 서버 (NO 빈 응답)에서 JSON을 반환하는 경우, 데이터 형식 : 'JSON은'작동해야하고 contentType이 필요하지 않습니다. 그러나 확인 JSON 출력을 ...

    jQuery를 AJAX는 유효하지만 직렬화를 JSON에 'parseerror'를 던질 것이다!


  15. 15.스크립트는 JSON 데이터 형식의 반환을 요구한다.

    스크립트는 JSON 데이터 형식의 반환을 요구한다.

    이 시도:

    private string test() {
      JavaScriptSerializer js = new JavaScriptSerializer();
     return js.Serialize("hello world");
    }
    

  16. 16.다음 시도

    다음 시도

    $.ajax({
        type: 'POST',
        url: 'Jqueryoperation.aspx?Operation=DeleteRow',
        contentType: 'application/json; charset=utf-8',
        data: { "Operation" : "DeleteRow", 
                "TwitterId" : 1 },
        dataType: 'json',
        cache: false,
        success: AjaxSucceeded,
        error: AjaxFailed
    });
    

    또는

    $.ajax({
        type: 'POST',
        url: 'Jqueryoperation.aspx?Operation=DeleteRow&TwitterId=1',
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        cache: false,
        success: AjaxSucceeded,
        error: AjaxFailed
    });
    

    대신 JSON 객체에서 작은 따옴표 큰 따옴표를 사용합니다. 나는이 문제를 해결 것이라 생각합니다.

  17. from https://stackoverflow.com/questions/6186770/ajax-request-returns-200-ok-but-an-error-event-is-fired-instead-of-success by cc-by-sa and MIT license