PHP ECHO到JSON结果= JSON.parse:JSON数据第1行第2列的预期属性名称或'}'

时间:2019-05-29 11:33:25

标签: javascript php jquery json

我收到了php = echo "{success: true, redirect: '/home', auth_key:'$auth_key'}";的回声

并尝试解析它,但是遇到错误=

  

JSON.parse:预期属性名称或'}',位于   JSON数据

我尝试了jquery解析和普通的json.parse方法

$.ajax({

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

我想从回声中获取auth的值

2 个答案:

答案 0 :(得分:1)

您的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,我建议您创建一个Array并使用json_encode()echo。该函数将使用您的数据生成一个有效的json,您无需担心对其进行格式化。

答案 1 :(得分:1)

相反,您创建数组并将其保存为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输出。