Ajax 응답 200 정상이지만 응답 데이터를 로드하지 못한 것으로 표시됩니다.
백엔드 rest api에 Ajax를 호출하고 있습니다. api가 정상적으로 반환됩니다.console.log()에서 성공 데이터와 오류 데이터를 확인하면 콘솔에서 "resource logged in"("resource logged in", 200 ok)가 표시되지만 해당 인증/로그인 경로에 대한 네트워크 탭 응답에서 확인하면 "Failed response data loading"(응답 데이터 로드 실패)로 표시됩니다.그리고 이런 일은 항상 일어나는 것이 아니라 가끔 발생하는 것입니다.왜죠? 여기 제 아약스의 통화 내용이 있습니다.
ajax
.post('auth/login', {
data: {
oauth_provider: 'google',
oauth_token: (isToken ? authResult : authResult.access_token)
},
cache: false
})
.done(function(data) {
console.log(data); // Resource Logged in
})
.error(function(err){
console.log(err);
})
여기 제 아약스의 내용이 있습니다.js
define(
[
'jquery',
'util',
],
function ($, util) {
var ajax = {
request: function (type, url, options) {
if (url.indexOf('http') === -1) {
url = util.url(url);
}
if (options === undefined) {
options = {};
}
options.type = type
options.url = url;
return $.ajax(options);
},
get: function (url, options) {
return ajax.request('GET', url, options);
},
post: function (url, options) {
return ajax.request('POST', url, options);
},
put: function (url, options) {
return ajax.request('PUT', url, options);
},
delete: function (url, options) {
return ajax.request('DELETE', url, options);
}
};
return ajax;
}
)
보아하니 쿠키 정리에 문제가 있는 것 같습니다.시스템을 정리하면 시스템이 정상적으로 작동합니다.도움이 꼭 필요한 것은 아닙니다!
이것은 다음의 복제품입니다.반환된 콘텐츠에 헤더 Content-Type:text/html; charset=UTF-8이 있더라도 Chrome 개발 도구가 응답을 표시하지 못함
앞으로 이곳에 오시는 분들을 위해 https://stackoverflow.com/a/38925237/1235072 이라는 답변을 드립니다.
더 많은 정보: https://bugs.chromium.org/p/chromium/issues/detail?id=141129
확인합니다.Chrome 버전 45 이후로 일부 Ajax 요청이 상태 코드로 200개가 되었지만 "Failed to Load Content" 콘텐츠를 표시하는 데 문제가 있었습니다.
나의 Ajax 요청은 루프를 위해 내부에 있으며, 실패한 내용을 다시 요청하면 내용이 정상적으로 로딩됩니다.
For 루프 내부에서 사용 중인 문제를 해결하는 것 같습니다.setTimeout
요청과 다른 요청 사이에
"빈 캐시 및 하드 다시 로드"가 저에게 도움이 되었습니다.
내 php ajax 페이지에서 표시 오류를 false로 변경했을 때 수정되었습니다. 이것도 그렇게 보입니다.
부터ini_set('display_errors', 1);
로.ini_set('display_errors', 0);
Javascript를 사용하고 있는데 이 방법을 사용하면 네트워크 탭에서 데이터를 가져오지 않고 시간이 더 오래 걸립니다.
xhr.onreadystatechange=function(){
if(xhr.readyState==4){...}}
준비 상태 변경 및 준비 상태를 가져오는 작업을 수행하고 있기 때문에 시간이 걸리고 사용자가 정보를 얻기 전에 브라우저에서 정보를 삭제합니다.이를 사용하면 다음과 같은 텍스트 응답을 얻을 수 있습니다.
xhr.addEventListener("load", (function(){ console.log(this.responseText);}));
OR
xhr.onload = function(){ console.log(this.responseText);};
편집:
PHP 파일에서 다음 헤더를 사용하고 있습니다.
header("Cache-Control: no-cache, must-revalidate"); //
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); //Date in the past
포스트백 때문에 제 프로젝트에서 이런 일이 일어나고 있었습니다.제가 포스트백 문제를 해결했을 때 오류가 사라졌습니다.
언급URL : https://stackoverflow.com/questions/32821289/ajax-response-200-ok-but-shows-failed-to-load-response-data
'programing' 카테고리의 다른 글
Java EE 웹 앱에서 Windows 인증을 사용하여 SQL Server에 연결할 수 있습니까? (0) | 2023.09.02 |
---|---|
IIS ApplicationPoolIdentity에 'Temporary ASP'에 대한 쓰기 권한이 없습니다.NET 파일' (0) | 2023.09.02 |
데이터베이스에 열을 추가할 때 오류 발생 (0) | 2023.09.02 |
테스트를 위해 Forge 서버에 두 번째 Maria DB를 생성하시겠습니까? (0) | 2023.09.02 |
mysql order varchar 필드(정수) (0) | 2023.09.02 |