【问题标题】:PHP ECHO to JSON result = JSON.parse: expected property name or '}' at line 1 column 2 of the JSON dataPHP ECHO 到 JSON 结果 = JSON.parse:JSON 数据第 1 行第 2 列的预期属性名称或“}”
【发布时间】:2019-05-29 11:33:24
【问题描述】:

我有来自 php = echo "{success: true, redirect: '/home', auth_key:'$auth_key'}"; 的回声

并试图解析它但遇到错误=

JSON.parse:第 1 行第 2 列的预期属性名称或“}” JSON数据

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

$.ajax({

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

我想从 echo 中获取 auth 的值

【问题讨论】:

    标签: javascript php jquery json


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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-31
        • 1970-01-01
        • 2014-12-02
        • 1970-01-01
        • 1970-01-01
        • 2020-09-15
        • 2018-06-28
        • 1970-01-01
        相关资源
        最近更新 更多