javascript - 将 json 对象从 php 传递到 javascript

标签 javascript php json node.js

在 PHP 中,我有一个像这样的 JSON 对象(即使在这里也不确定它的格式是否正确以及我是否正确传递了它):

$someJSONObject = '{token:"randomtoken",signature:"signature"};

并在传递响应之前对其进行编码:

$response['code'] = 1;
$response['status'] = $api_response_code[ $response['code'] ]['HTTP Response'];
$response['data'] = $someJSONObject;

my_response($_GET['format'], $response);  //json_encode($response)

然后在我的 JS 中我收到这样的字符串格式:

{ code:1,
  status:200,
  data: '"{token:\\"randomtoken\\", signature:\\"signature\\"}"' }

我将它解析为一个对象:

phpObj = JSON.parse(body);

这样我就可以访问“数据”:

dataObj = phpObj.data;

这给了我字符串形式的结果:

{token:\"randomtoken\", signature:\"signature\"}  //console.log(dataObj)

在这里我迷失了方向,无法访问“ token ”并获得未定义的值:

console.log('token: ' + dataObj.token)    //token:undefined  

我意识到我正在尝试在字符串中加点,所以我在最后一步一定做错了什么。然而,即使我尝试使用 JSON.parse 或 JSON.stringify 它似乎仍然没有帮助,并给我一个“未定义”。

dataObj = JSON.parse(phpObj.data);
console.log(typeof(dataObj);            //string
console.log(dataObj);                   //"\"{token:\\\"randomtoken\\\", signature:\\\"signature\\\"}\""
console.log(dataObj.token);             //token: undefined 

 dataObj = JSON.stringify(phpObj.data);
 console.log(typeof(dataObj));          //string
 console.log(dataObj);                  //"\"{token:\\\"randomtoken\\\", signature:\\\"signature\\\"}\""
 console.log(dataObj.token);            //token: undefined

任何帮助/反馈将不胜感激。

最佳答案

您不应该嵌入 json-in-json。这是相当没有意义的。处理纯粹的 native 数据结构,例如

$response = array(
   'code' => 1,
   'status' => xxx,
   'data' => array
         'token' => 'randomtoken',
         etc...
   )
);

然后对其进行编码:

echo json_encode($response);

JS 端会将其解码回原生 JS 结构,然后您就可以简单地:

alert(response.data.token);

无需额外的解码步骤,无需担心转义引号等...

关于javascript - 将 json 对象从 php 传递到 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19840042/

相关文章:

javascript - 递归更改数组结果

php - 为什么 nicEdit 所见即所得编辑器有时会阻止准确发送值?

php - WHM mysql "SQLSTATE[HY000] [1045] Access denied for user"

java - 无法通过 ReSTLet StringRepresentation 类将 xml 字符串中的属性 "type"转换为 json 字符串

php - Composer 无法安装 tymon/jwt-auth

Javascript:如何在 php 的 while 循环内编写 document.getElementsByClassName()

javascript - 如何增加 Cloud Firestore 中的计数器

Javascript私有(private)方法专用调用者返回未定义

javascript - 如何在刷新时触发事件

javascript - 如何从 JSON 数组创建 React 组件?