크롬의 jquery ajax 문제
나는 내 페이지에서 FF와 IE에서 다음과 같은 jquery 코드를 실행하고 있지만, 크롬은 미친 것 같습니다.
FF와 IE에서 통화가 이루어지고 크롬에서 div.에 결과가 추가되며, 실패 시 agax를 호출합니다.
AjaxFailed 함수에 전달된 XMLHttpRequest의 상태 코드는 "200"이고 상태는텍스트는 "ok"입니다. 준비 상태는 4이고 응답 텍스트는 div에 추가할 데이터로 설정됩니다.기본적으로 제가 볼 수 있는 바로는 실패 방법이라고 하지만 실패하지는 않습니다.나는 get과 post 요청을 모두 시도했고 그것은 항상 chrome에서 깨집니다.
function getBranchDetails(contactID, branchID) {
$.ajax({
type: "GET",
url: urlToRequestTo,
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: branchDetailsSuccess,
error: AjaxFailed
});
}
function branchDetailsSuccess(result) {
$("#divBranchControl").empty();
$("#divBranchControl").append(" " + result);
$("#branchDiv").tabs();
}
function AjaxFailed(result) {
alert("FAILED : " + result.status + ' ' + result.statusText);
}
AJAX 작업에서 다음을 추가합니다.async: false
나고끝 datatype: "json"
통화를 하는 데 .Chrome에서 비동기 호출을 처리하는 데 문제가 있습니다.
방금 이 질문이 많은 조회수를 기록했고, 아직도 공개되어 있습니다.저는 그것에 대해 완전히 잊어버렸고 이것이 제가 그것을 닫을 수 있게 해주기를 바랍니다.
데이터 형식 인수를 0으로 설정하거나 데이터 형식 인수를 완전히 제거하면 문제가 해결됩니다.
예를 들어 렌더링된 보기(문자열의 HTML 스니펫)를 반환하고 이 코드에서는 데이터 유형을 json으로 지정하고 있지만 실제로는 그렇지 않습니다.대부분의 다른 브라우저는 데이터 유형이 잘못되면 무시하고 수명을 연장하여 HTML 결과를 추가할 수 있습니다.
Chrome에서 오류가 발생합니다.실제 Ajax 요청이 정상적으로 처리되었기 때문에 상태 텍스트는 정상이고 상태 코드는 200입니다.문제는 요청 자체와는 상관이 없고, 반환된 데이터가 제가 크롬에 말한 것과 다르다는 것입니다.
그래서 크롬이 깨집니다.데이터 형식 인수를 제거하면 데이터가 가져올 때 데이터가 무엇인지 완전히 크롬으로 파악합니다.datatype 인수를 "html"로 설정하면 잘 작동합니다.
간단히 말해서, 문제는 크롬이 아닙니다.나야.내가 그렇게 멍청하니까요.제가 원래 질문에서 제시한 예에 대한 답변이기 때문에 이 질문에 대한 답변으로 표시합니다.
다른 사람들은 코멘트에서 이 솔루션이 도움이 되지 않을 가능성이 가장 높은 다른 상황에 대해 설명했습니다.
아직도 이 문제가 있는지 모르겠지만, 오늘도 비슷한 오류가 발생했습니다.응답 텍스트가 있는 문자열을 반환하기 위해 aspx 페이지에 전화를 걸었는데 크롬은 아무것도 반환하지 않았습니다.알고 보니 응답이 있었습니다.다른 모든 곳에서 작동했지만 일부 필수 헤더나 무언가를 Chrome 및/또는 Safari로 보내지 않은 내 aspx 페이지를 닫습니다.누군가에게 도움이 되길 바랍니다.
하루 반 후에 저는 그것을 극복했습니다, 그래서 제가 발표해도 될까요...
function getBranchDetails(contactID, branchID) {
$.ajax({
type: "GET",
url: urlToRequestTo,
data: "",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: branchDetailsSuccess,
error: branchAjaxFailed
});
}
function branchDetailsSuccess(result) {
$("#divBranchControl").empty();
$("#divBranchControl").append(" " + result);
$("#branchDiv").tabs();
}
function branchAjaxFailed(result) {
if (result.status == 200 && result.statusText == "OK") {
//this is here only because chrome breaks on this method only for no reason whatsoever.
//chrome sees the request as failed, but everything happens fine...
branchDetailsSuccess(result.responseText);
}
else {
alert("FAILED : " + result.status + ' ' + result.statusText);
}
}
나는 방금 크롬에서 이것을 마주쳤고(파이어폭스에서는 괜찮았다), 그리고 추가했습니다.async: true
아약스 매개 변수로 해결했습니다.
데이터 매개 변수를 ""로 설정해 보십시오.
위해서GET
요청 시 데이터 매개 변수가 URL에 추가됩니다. Chrome이 왜 그것에 문제가 있는지는 모르겠지만 시도해 볼 가치가 있습니다 :)
성공을 위해 사용해 보십시오.
success: function(response) { branchDetailsSuccess(response); },
서블릿에서 POST 방법 사용 및 변경type:POST
에$.ajax
.
언급URL : https://stackoverflow.com/questions/1742049/jquery-ajax-problem-in-chrome
'programing' 카테고리의 다른 글
Angular 2 단위 검정: 사용자 지정 파이프 오류 파이프를 찾을 수 없습니다. (0) | 2023.07.25 |
---|---|
ColumnStore를 사용하는 MariaDB는 많은 하위 프로세스를 생성합니다. (0) | 2023.07.25 |
기기를 흔들었을 때 앱을 새로 고치는 방법은? (0) | 2023.07.25 |
jQuery AJAX 루프 호출 (0) | 2023.07.25 |
Mongodb 콘텐트 및 문자열 (0) | 2023.07.20 |