将 JSON 对象从 PHP 传递到 JavaScript
passing json object from php to 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 中,我以这样的字符串格式接收它:
{ code:1,
status:200,
data: '"{token:''"randomtoken''", signature:''"signature''"}"' }
我将其解析为一个对象:
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
或
dataObj = JSON.stringify(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:
$someJSONObject = '{token:"randomtoken",signature:"signature"};
您需要将密钥括在 "
中。更好的是,让PHP来做:
$someJSONObject = json_encode(array(
'token' => 'randomtoken',
'signature' = 'signature'
));
然而,你正在做的真正奇怪的事情是试图在另一个 JSON 字符串中包含一串 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);
}
对不起,我的英语不好
相关文章:
- AJAX Post的奇怪Javascript/PHP行为
- 带有输入参数的Javascript/PHP中的XMLHTTPrequests
- 用Javascript/PHP创建字典
- 如何记录用户'使用Javascript/PHP的语音
- fetch data from db using javascript & php
- onClick按钮不工作javascript/php/jquery mobile
- 通过Javascript(PHP循环)添加类
- Javascript php onclick
- Interfacing html, javascript, php and mysql
- Javascript/PHP Validation
- JavaScript/PHP 刷新取代了 HTML 元素类
- Cross-domain javascript <-> php
- 设置计时器并使用javascript/PHP进行检查
- Javascript/Php聊天-输入is'不能在一个文本框中工作
- AJAX (JavaScript / PHP), FormData not sending
- Javascript/PHP中的HTML转义/编码
- 我想在Iframe Javascript PHP的帮助下,将单个ajax上传器脚本转换为多个上传器
- javascript/php中的批量打印
- Javascript/PHP,使用文本文件作为数据库,并将内容组织到阵列表中
- JavaScript/PHP函数不会发布到其他页面