programing

Ajax 요청이 200 OK를 반환하지만 성공 대신 오류 이벤트가 발생합니다.

goodcopy 2022. 10. 7. 21:41
반응형

Ajax 요청이 200 OK를 반환하지만 성공 대신 오류 이벤트가 발생합니다.

웹 사이트에서 Ajax 요청을 구현하여 웹 페이지에서 엔드포인트에 전화를 걸고 있습니다.항상 200 OK를 반환하지만 jQuery는 오류 이벤트를 실행합니다.
여러 가지 시도를 해봤지만 문제를 알 수 없었다.아래에 코드를 추가합니다.

jQuery 코드

var row = "1";
var json = "{'TwitterId':'" + row + "'}";
$.ajax({
    type: 'POST',
    url: 'Jqueryoperation.aspx?Operation=DeleteRow',
    contentType: 'application/json; charset=utf-8',
    data: json,
    dataType: 'json',
    cache: false,
    success: AjaxSucceeded,
    error: AjaxFailed
});
function AjaxSucceeded(result) {
    alert("hello");
    alert(result.d);
}
function AjaxFailed(result) {
    alert("hello1");
    alert(result.status + ' ' + result.statusText);
}

C# 코드:JqueryOpeartion.aspx

protected void Page_Load(object sender, EventArgs e) {
    test();
}
private void test() {
    Response.Write("<script language='javascript'>alert('Record Deleted');</script>");
}

필요한 건("Record deleted")문자열이 정상적으로 삭제된 후.내용을 삭제할 수 있지만 이 메시지가 표시되지 않습니다.이게 맞습니까, 아니면 제가 잘못한 건가요?이 문제를 해결하는 올바른 방법은 무엇입니까?

jQuery.ajax 지정된 내용에 따라 응답 본문을 변환하려고 합니다.dataType파라미터 또는Content-Type헤더가 송신됩니다.변환이 실패했을 경우(예를 들어 JSON/XML이 무효인 경우), 에러 콜백이 기동됩니다.


AJAX 코드에는 다음이 포함됩니다.

dataType: "json"

이 경우 jQuery:

응답을 JSON으로 평가하고 JavaScript 개체를 반환합니다.[…] JSON 데이터는 엄밀한 방법으로 해석됩니다.부정한 형식의 JSON은 거부되고 해석 오류가 발생합니다.[…] 빈 응답도 거부됩니다. 서버는 대신 null 또는 {} 응답을 반환해야 합니다.

서버측 코드가 HTML 스니펫을 반환한다.200 OK상황.jQuery는 유효한 JSON을 상정하고 있기 때문에 에러 콜백이 기동되어 다음과 같은 오류가 발생합니다.parseerror.

해결방법은 이 시스템을 제거하는 것입니다.dataTypejQuery 코드에서 파라미터를 지정하여 서버측 코드를 반환합니다.

Content-Type: application/javascript

alert("Record Deleted");

단, JSON 응답을 반환하고 성공 콜백 내에 다음 메시지를 표시하는 것이 좋습니다.

Content-Type: application/json

{"message": "Record deleted"}

AJAX 호출에서 data Type: "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
});

여러 개의 공백으로 구분하여 사용할 수 있는 행운이 있었습니다.dataTypes(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
});

OP와 유사한 문제 해결 방법을 찾다가 우연히 이 게시물을 접하게 되었기 때문에 참고로 말씀드립니다.

제 경우 Chrome의 동일한 원본 정책 때문에 jQuery Ajax 요청이 성공하지 못했습니다.서버(Node.js)를 다음과 같이 변경하자 모든 것이 해결되었습니다.

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

벽에 머리를 부딪히는 데 한 시간이나 걸렸어요바보 같은 기분이야...

aspx 페이지에 JSON 오브젝트가 반환되지 않는 것 같습니다.페이지에는 다음과 같은 작업이 필요합니다(page_load).

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

Response.Write(OutPut);

또한 Ajax Failed를 변경해 보십시오.

function AjaxFailed (XMLHttpRequest, textStatus) {

}

textStatus에러 타입이 표시됩니다.

【jQuery】jQuery quququququququququququququququ.하지 않는 은 " " " 입니다.void.

Ajax 에서 "Ajax"를 언급해 .dataType='text'.

문제가 해결됩니다.

요.dataType: 'json'구현된 웹 서비스 방법이 무효인 경우 헤더에서 제외됩니다.

이 경우 Ajax 콜은 JSON 반환 데이터 유형을 갖지 않습니다.

이것 좀 봐.이것도 비슷한 문제입니다.일하려고 노력했어요.

안 함dataType: 'JSON',

참고: 응답 데이터는 json 형식이어야 합니다.

다음 코드를 사용하여 응답이 JSON 형식(PHP 버전)인지 확인합니다.

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

저도 같은 문제가 있었어요.컨트롤러가 JSON이 아닌 상태 코드를 반환하는 것이 문제였습니다.컨트롤러가 다음과 같은 것을 반환하는지 확인합니다.

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

또 하나 제가 일을 망친 건localhost.0.1그 의 경우.자바스크립트

없음), 「JSON」( 「」)는,dataType: 'json'가 있을 입니다.contentType을 사용하다, 출력..., JSON 출력을 확인합니다.

jQuery AJAX가 유효하지만 직렬화되지 않은 JSON에 '파스 오류'를 발생시킵니다!

저도 같은 문제가 있었어요.이는 JSON 응답에 특수 문자가 포함되어 있고 서버 파일이 UTF-8로 인코딩되지 않았기 때문에 Ajax 콜은 이것이 유효한 JSON 응답이 아니라고 판단했기 때문입니다.

스크립트에 JSON 데이터 유형의 반환이 필요합니다.

이것을 시험해 보세요.

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

언급URL : https://stackoverflow.com/questions/6186770/ajax-request-returns-200-ok-but-an-error-event-is-fired-instead-of-success

반응형