Как получить ошибку если ответ от PHP не JSON формат?

Файл index.php

<?php
echo 'не json';
?>

JS скрипт

    $.ajax({
        url: '/index.php',
        dataType: 'json',
        beforeSend: function() {
            log('Получение данных...');
        },
        success: function(data) {
            console.log('Успешно');
        },
        error: function() {
            console.log('Ошибка');
        }
    });

Сейчас выводит Успешно, а нужно чтобы была Ошибка


Ответы (1 шт):

Автор решения: HTO HOT

Попробуйте так(числа тоже считает как JSON)

 $.ajax({
        url: '/index.php',
        dataType: 'json',
        beforeSend: function() {
            log('Получение данных...');
        },
        success: function(data) {
          if(isJsonString(data)){
          console.log('Успешно');
          }else{
           console.log('Ошибка');
          }
        },
        error: function() {
            console.log('Ошибка');
        }
});
function IsJsonString(str) {
    try {
        JSON.parse(str);
    } catch (e) {
        return false;
    }
    return true;
}
→ Ссылка