source

Javascript:AJAX 응답이 JSON인지 확인하는 방법

ittop 2023. 3. 18. 09:20
반응형

Javascript:AJAX 응답이 JSON인지 확인하는 방법

JSON이 응답하기를 바라는 AJAX 요청이 있습니다.

그러나 반환되는 것은 JSON이 아니라 HTML 오류 페이지(불행하게도 응답 타입 200)일 가능성이 있습니다.

응답이 JSON인지 아닌지는 어떻게 알 수 있습니까?

(필요하다면 jQuery를 사용하고 있습니다.단, 플러그인은 사용할 수 없습니다.)

jQuery를 사용하는 경우,dataType호출의 특성json그러면 jQuery가 JSON을 해석하려고 합니다.JSON이 아닌 경우,error()콜백

$.ajax({
    url: '/my/script.ext',
    dataType: 'json',
    success: function(data, textStatus, jqXHR) { /*YAYE!!*/ },
    error: function(jqXHR, textStatus, errorThrown) { /*AWWW... JSON parse error*/ }
});

편집

여기에 있는 jQuery를 사용하지 않는 사용자는 기본적으로 json으로 해석하여 오류를 파악해야 합니다.

var data = 'some_data';

try {
    data = JSON.parse(data);
} catch(e) {
    //JSON parse error, this is not json (or JSON isn't in your browser)
}

//act here on the the parsed object in `data` (so it was json).

jQuery는 dataType을 자동으로 검출합니다.

응답이 JSON인 경우 정상적으로 동작하는 어플리케이션으로 인해Content-Type응용 프로그램/json으로 이동합니다.

따라서 서버가 정상적으로 동작하고 있는 경우, 응답의 Content-Type 헤더가 application/json으로 시작하는지 테스트하기만 하면 됩니다.

우연히도 jQuery는 이미 이 작업을 스스로 수행하고 있습니다.

$.get('/foo', function(data, status, xhr, dataType) {
    if ('json' === dataType) {
        // Yay that's JSON !
        // Yay jQuery has already parsed `data` 
    }
});

jQuery는 dataType을 검출하여 콜백함수의 4번째 파라미터로 전달합니다.dataType이 JSON일 경우 JSON 문자열을 해석하고 콜백의 첫 번째 파라미터로 결과값을 해석합니다.

try catch를 사용하면 좋을 것 같습니다.

try {
   $.parseJSON(input)
} catch(e) {
   // not valid JSON
}

jQuery 구문 분석 J여기에는 SON 기능을 사용할 수 있습니다.그러면 예외가 발생하므로 계속 진행하십시오.

data = '{}';
try {
    json = $.parseJSON(data);
} catch (e) {
    // not json
}
try {
    jQuery.parseJson(json_string_here);
} catch(e) {
   ... malformed json ...
}

언급URL : https://stackoverflow.com/questions/7288136/javascript-how-to-tell-whether-ajax-response-is-json

반응형