У меня есть эхо от php = echo "{success: true, redirect: '/home', auth_key:'$auth_key'}";

И попытался разобрать его, но обнаружил ошибку =

JSON.parse: ожидаемое имя свойства или '}' в строке 1 столбца 2 данных JSON

Я пытался разобрать jquery и нормальный метод json.parse

$.ajax({

    type: "POST",
    url: "/login/process",
    data: user,
    success: function (response) {
            var resp = $.parseJSON(response);
    }
});

Я бы хотел получить значение auth из echo

0
Jherom Ocado De Jesus 29 Май 2019 в 14:33

2 ответа

Лучший ответ

Ваш JSON недействителен. Попробуйте это на jsonlint. Если вы прокрутите страницу вниз, вы увидите Распространенные ошибки и правило:

Заключение ключей в кавычки. Правильный формат для коллекции: {"key": "value"}

Так должно быть:

echo '{"success": true, "redirect": "/home", "auth_key":"$auth_key"}';

Тест Javascript:

let invalidJson = "{success: true, redirect: '/home', auth_key:'$auth_key'}",
    validJson = '{"success": true, "redirect": "/home", "auth_key":"$auth_key"}';
    
try {
  console.log("invalid json", JSON.parse(invalidJson));
}
catch (e)
{
  console.error(e);
}
    
try {
  console.log("valid json", JSON.parse(validJson));
}
catch (e)
{
  console.error(e);
}

Если вы создаете жесткий код json, я бы посоветовал создать { {X0}} и echo с помощью json_encode(). Функция выдаст действительный json с вашими данными, и вам не нужно беспокоиться о его форматировании.

1
DontVoteMeDown 30 Май 2019 в 11:12

Вместо этого вы создаете массив и сохраняете его как json и проверяете,

$a =  ["success" =>  true, "redirect" =>  '/home', "auth_key" => $auth_key];
echo json_encode($a, JSON_UNESCAPED_SLASHES);die; // 

JSON_UNESCAPED_SLASHES - Не уходите /.

< Сильный > Выход

{"success":true,"redirect":"/home","auth_key":"123213123123"}

Это даст короткий вывод JSON.

1
Rahul 29 Май 2019 в 11:41