首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JSON编码/解码不能正常工作

JSON编码/解码不能正常工作
EN

Stack Overflow用户
提问于 2011-10-27 10:15:38
回答 4查看 2.8K关注 0票数 2

我准备了一个JSON字符串,并将其从PHP文件发送到Javascript函数,如下所示:

代码语言:javascript
运行
复制
$json = array();
$json['slice'] = false;
$json['G500'] = false;
$json['KG1'] = false;   

$encoded = json_encode($json);
die($encoded);

然而,在我的JS函数中,如果我这样做,它无法解码JSON对象:

代码语言:javascript
运行
复制
var d = req.responseText;                                           
var jsonObject = eval(d);

我可以让它对JSON对象执行eval操作的唯一方法是手动添加括号。

jsonObject = eval("(" + d + ")");

我也有同样的问题,反之亦然。将JSON对象发送到PHP并尝试在那里对其进行解码失败。我认为在尝试解码之前,我需要删除PHP脚本中的圆括号。

为什么会发生这种情况?我能做些什么来解决这个不兼容问题吗?

编辑:

如果我使用JSON.parse,PHP to JS现在可以工作了。从另一方面来说,我仍然有麻烦。

这就是我将数据发送到PHP的方式:

代码语言:javascript
运行
复制
var JSONstring = 
{
    "Product": document.getElementById('item').value, 
    "Size": document.getElementById('size').value,
    "Quantity": document.getElementById('quantity').value                                                   
};

url = "maintainOrder.php?json=" + JSON.stringify(JSONstring);

req.open("GET", url, true);

但是,PHP脚本无法对其进行解码。

代码语言:javascript
运行
复制
$newItem = json_decode($_GET['json']);

array_push($_SESSION['order'],$newItem);
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-10-27 10:33:06

有关php to javascript的问题,请参考Tomalak Geret‘’kal的答案。

对于php的javascript,也许我有解决方案:

如果你想在php中使用关联数组,那么你必须将assoc参数作为true传递给json_decode (默认为false)

示例:

$array = json_decode($jsonString, true);

有几次我被这个问题所困扰:默认情况下,如果json_decode接收到一个javascript对象,它会尝试创建一个对象(如果你想到这一点,它是非常有意义的),如果你需要这个行为,你必须强制它呈现一个关联数组

票数 3
EN

Stack Overflow用户

发布于 2011-10-27 10:25:21

你的Javascript

eval的前导{字符because of an ambiguity with block scope有问题。

使用圆括号强制将输入解析为表达式是一种解决方案,但您应该完全避免使用evaluse a proper JSON decoding function

你的PHP

我们需要查看发送到PHP脚本的数据,以了解它无法解析的原因。一般来说,只要JSONLint接受你的JSON,PHP的json_decode也会接受。所以试一试吧。

票数 4
EN

Stack Overflow用户

发布于 2011-10-27 10:32:40

我认为你需要做一些字符串处理,你需要做的就是回显并查看JSON字符串的确切格式,并确保它符合标准格式,然后在服务器端和客户端使用字符串处理来达到预期的效果

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7911044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档