将json对象从php传递给javascript

在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我收到这样的string格式:

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

我把它parsing成一个对象:

 phpObj = JSON.parse(body); 

所以我可以访问“数据”:

 dataObj = phpObj.data; 

这给了我一个string的结果:

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

在这里我失去了我的方式,不能访问'令牌'得到一个未定义的:

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

我意识到我试图把一个string,所以我必须在这最后一步做错了什么。 但是,即使我尝试使用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 

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

你不应该embeddedjson-in-json。 这是毫无意义的。 处理纯粹的NATIVE数据结构,例如

 $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' )); 

然而,你正在做的奇怪的事情是试图在另一个JSONstring中包含一串JSON。 这是说,温和地混淆。

相反,将数据作为数组传递给my_response ,并让json_encode进行编码。

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

在你的Javascript中,你应该可以做phpObj.data.token

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

 { "token" [ "token": randomtoken, "signature": signature] } 

然后我这样操作:

 var datos = JSON.parse(JSON); for(var something in datos){ var objeto = datos[something]; alert('token: ' + objeto.token); } 

对不起我英语不好