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
.
해결방법은 이 시스템을 제거하는 것입니다.dataType
jQuery 코드에서 파라미터를 지정하여 서버측 코드를 반환합니다.
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
});
여러 개의 공백으로 구분하여 사용할 수 있는 행운이 있었습니다.dataType
s(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 출력을 확인합니다.
- 유효(JSONLint)
- 시리얼화(JSONMinify)
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
'programing' 카테고리의 다른 글
MySQL의 키, 기본 키, 고유 키 및 색인의 차이 (0) | 2022.10.07 |
---|---|
Junit @Before/@After는 어떤 순서로 호출됩니까? (0) | 2022.10.07 |
여러 프로젝트/모듈에서 PropertyPlaceholderConfigr을 통해 여러 속성 파일 사용 (0) | 2022.10.07 |
v-module 질문, 개체 어레이 목록의 날짜를 기준으로 날짜를 사용하지 않도록 설정하는 방법 (0) | 2022.10.07 |
Python Interpreter에서 업데이트된 패키지를 다시 가져오려면 어떻게 해야 합니까? (0) | 2022.10.07 |