将json对象从php传递到javascript

将json对象从php传递到javascript,javascript,php,json,node.js,Javascript,Php,Json,Node.js,在PHP中,我有一个类似这样的JSON对象(即使在这里也不确定它的格式是否正确以及我是否正确地传递了它): 并在传递响应之前对其进行编码: $response['code'] = 1; $response['status'] = $api_response_code[ $response['code'] ]['HTTP Response']; $response['data'] = $someJSONObject; my_response($_GET['format'], $response)

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

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

$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\\"}"' }
var datos = JSON.parse(JSON);      
    for(var something in datos){
      var objeto = datos[something];
      alert('token: ' + objeto.token);
    }
我将其解析为一个对象:

phpObj = JSON.parse(body);
所以我可以访问“数据”:

dataObj = phpObj.data;
它以字符串的形式给出结果:

{token:\"randomtoken\", signature:\"signature\"}  //console.log(dataObj)
在这里,我迷失了方向,无法访问“令牌”,获取未定义的:

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 


如有任何帮助/反馈,将不胜感激

您不应该在json中嵌入json。这是毫无意义的。处理纯本机数据结构,例如

$response = array(
   'code' => 1,
   'status' => xxx,
   'data' => array
         'token' => 'randomtoken',
         etc...
   )
);
然后对其进行编码:

echo json_encode($response);
JS端会将其解码回本机JS结构,然后您只需:

alert(response.data.token);

没有额外的解码步骤,不用担心转义引号等

您不应该在json中嵌入json。这是毫无意义的。处理纯本机数据结构,例如

$response = array(
   'code' => 1,
   'status' => xxx,
   'data' => array
         'token' => 'randomtoken',
         etc...
   )
);
然后对其进行编码:

echo json_encode($response);
JS端会将其解码回本机JS结构,然后您只需:

alert(response.data.token);

没有额外的解码步骤,不用担心转义引号等

首先,这不是有效的JSON:

 $someJSONObject = '{token:"randomtoken",signature:"signature"};
您需要将密钥包含在
中。更好的是,让PHP来做:

$someJSONObject = json_encode(array(
    'token' => 'randomtoken',
    'signature' = 'signature'
));
然而,你正在做的一件非常奇怪的事情是,试图在另一个JSON字符串中包含一个JSON字符串。说得委婉一点,这是令人困惑的

相反,将数据作为数组传递给
my_response
,并让
json_编码
对整个批次进行编码

$someJSONObject = array(
    'token' => 'randomtoken',
    'signature' = 'signature'
);
my_response($_GET['format'], $response);

在Javascript中,您应该能够执行
phpObj.data.token

首先,这是无效的JSON:

 $someJSONObject = '{token:"randomtoken",signature:"signature"};
您需要将钥匙放入
”中。更好的是,让PHP来做:

$someJSONObject = json_encode(array(
    'token' => 'randomtoken',
    'signature' = 'signature'
));
然而,您正在做的真正奇怪的事情是,试图在另一个JSON字符串中包含一个JSON字符串。委婉地说,这令人困惑

相反,将数据作为数组传递给
my_response
,并让
json_编码
对整个批次进行编码

$someJSONObject = array(
    'token' => 'randomtoken',
    'signature' = 'signature'
);
my_response($_GET['format'], $response);

在Javascript中,您应该能够执行
phpObj.data.token

我有一个类似的代码,但我的json如下所示

{ "token" [ "token": randomtoken, "signature": signature] }
然后我像这样操纵:

{ code:1,
  status:200,
  data: '"{token:\\"randomtoken\\", signature:\\"signature\\"}"' }
var datos = JSON.parse(JSON);      
    for(var something in datos){
      var objeto = datos[something];
      alert('token: ' + objeto.token);
    }

对不起,我的英语不好

我有一个类似的代码,但是我的json看起来像这样

{ "token" [ "token": randomtoken, "signature": signature] }
然后我像这样操纵:

{ code:1,
  status:200,
  data: '"{token:\\"randomtoken\\", signature:\\"signature\\"}"' }
var datos = JSON.parse(JSON);      
    for(var something in datos){
      var objeto = datos[something];
      alert('token: ' + objeto.token);
    }

对不起,我的英语不好

当PHP有一个函数时,人们一次又一次地试图编码自己的JSON。我想知道你是否有一个理论来解释为什么这种情况经常发生?我是否遗漏了什么,是否有
json_encode()
不够好的情况,而我只是个傻瓜?谢谢你,Marc B。我改变了:谢谢你,Marc B。我改变了我在PHP上构建json对象的方式,改成了你建议的方式,只在最初解析响应时没有额外的解码步骤。MonkeyZeus-我不使用PHP,这显然是我在处理JSON方面的一个错误。人们一次又一次地尝试编码自己的JSON,而PHP有一个函数。我想知道你是否有一个理论来解释为什么这种情况经常发生?我是否遗漏了什么,是否有
json_encode()
不够好的情况,而我只是个傻瓜?谢谢你,Marc B。我改变了:谢谢你,Marc B。我改变了我在PHP上构建json对象的方式,改成了你建议的方式,只在最初解析响应时没有额外的解码步骤。MonkeyZeus-我不使用PHP,这显然是我在处理JSON方面的一个错误。这是一个问题还是一个答案?这是一个问题还是一个答案?谢谢你的反馈,lonesomeday。事实上,我本想将我共享的代码的键括在引号中,但在我慌乱/匆忙的状态下,共享了错误的代码…我相信Marc B,因为他第一次进来,但感谢您的响应…我尝试在浏览器控制台中操纵JSON对象,但它似乎以另一种方式工作。无论如何,谢谢。@DevPer没问题。谢谢你的反馈,lonesomeday。事实上,我本想将我共享的代码的键括在引号中,但在我慌乱/匆忙的状态下,共享了错误的代码…我相信Marc B,因为他第一次进来,但感谢您的响应…我尝试在浏览器控制台中操纵JSON对象,但它似乎以另一种方式工作。无论如何,谢谢。@DevPer没问题。