jqXHR.responseText가 JSON 개체 대신 문자열을 반환하는 이유는 무엇입니까?
data Type이 "json"으로 설정된 $.ajax() 요청이 있습니다.서버가 올바른 MIME 유형인 "application/json"을 사용하여 JSON을 반환하고 있습니다.그러나 jqXHR 객체의 responseText는 항상 문자열입니다.내가 뭘 잘못하고 있지?원래 이렇게 하는 거야?
통화 방법은 다음과 같습니다.
var options = {
dataType:'json',
type: 'GET',
url: "http://example.com/api/"
};
var key = "PassToCallback";
var jqXHRObject = $.ajax(options).then(
function(data, textStatus, jqXHR, key) {
this.success(data, textStatus, jqXHR, key);
},
function(jqXHR, textStatus, errorThrown) {
this.error(jqXHR, textStatus, errorThrown);
}
);
console.log(jqXHRObject.getResponseHeader("content-type")); // application/json
console.log(typeof jqXHRObject.responseText); // string
그래서 제가 해야 되는 게$.parseJSON(jqXHRObject.responseText)
실제 물체를 얻기 위해.문서에 따르면 $.ajax()는 responseText를 자동으로 변환해야 하므로 이 작업은 불필요할 것으로 보입니다.감사합니다!
저도 같은 문제가 있었어요.예외에서 정규화된 문자열이므로 문자열을 반환합니다.예: Symfony2 프로젝트에서 json으로 시리얼라이제이션하는 커널 리스너를 사용하고 있습니다.이는 적절한 REST 헤더에 적합합니다.
어쨌든, 해석해 주세요.이걸로 충분합니다.
$.ajaxSetup({
"error": function(jqXHR, status, thrownError) {
alert('error');
var responseText = jQuery.parseJSON(jqXHR.responseText);
console.log(responseText);
}
});
해라
$.ajaxSetup({
"error": function(jqXHR, status, thrownError) {
alert('error');
console.log(jqXHR.responseJSON);
}
});
당신은 $.ajax를 문서에 기재되지 않은 방법으로 사용하고 있습니다.사용.json
dataType은 데이터가 전달된 것을 의미합니다.success
콜백이 해석됩니다.다음과 같이 사용합니다.
$.ajax({
dataType:'json',
type: 'GET',
url: "http://example.com/api/"
success: function(data, textStatus, jqXHR) {
// `data` contains parsed JSON
},
error: function(jqXHR, textStatus, errorThrown) {
// Handle any errors
}
});
문서에는 responseText가 그 이름이 의미하는 것 이외에는 아무것도 표시되지 않습니다.텍스트.
왜 그냥 .getJSON을 사용하지 않는 거죠?그렇게 하면 당신이 작성한 코드의 절반이 제거되고 응답이 JSON으로 변환됩니다.윈/윈
순서 1: jqX 문자열 지정인사
var errorString = JSON.stringify(jqXHR.responseText);
2단계: 해당 문자열을 Jquery Object로 변경
var $errorObj = $(errorString);
순서 3: 응답 텍스트 중 원하는 부분을 찾아 가져옵니다.
var errorMessage = $errorObj.find('p').eq(1).text();
/* Here Im finding `Message:` thrown by the server, which is inside <p> tag */
바로 그거야.
$.ajax( /* ... */ ).fail( function(jqXHR, textStatus, errorThrown) {
var errorString = JSON.stringify(jqXHR.responseText);
var $errorObj = $(errorString);
var errorMessage = $errorObj.find('p').eq(1).text();
alert(errorMessage);
} );
언급URL : https://stackoverflow.com/questions/5825465/why-is-jqxhr-responsetext-returning-a-string-instead-of-a-json-object
'source' 카테고리의 다른 글
angularjs 단위로 스크롤 (0) | 2023.03.31 |
---|---|
네임스페이스 작업 시 SimpleXMlement를 찾을 수 없습니다. (0) | 2023.03.31 |
내 웹 서버에서 발견된 악의적인 PHP 파일로, 이 문제가 다시 발생하지 않도록 치료 및 예방하는 데 도움이 필요합니다. (0) | 2023.03.31 |
빈 문자열을 개체 식별자로 사용할 수 있습니까? (0) | 2023.03.31 |
태그 오류: 렌더에서 JSX 스타일 태그 오류 반응 (0) | 2023.03.31 |