php unable to decode value,关于php:无法对我使用JSON.stringify()发送的对象进行json_decode解码...

我有一个脚本,在JSON.stringify()之后使用AJAX发布大型对象。

当我尝试使用json_decode($object, true);在PHP中对其进行解码时,将不会对其进行解码。

我的对象看起来像:

var object = [

{field_name:"Date & Time", some_other_value:"somevalue1"}

]

我相当确定它与Date & Time有关。 我很确定在构建对象时,插入到field_name中的值是Date & Time

在PHP中,我尝试过:

json_decode($object, true);

json_decode(utf8_decode($object))// with true as well.

json_decode(htmlentities($object, ENT_QUOTES,"UTF-8");

似乎没有任何工作。

更新:

我在stringify上使用了alert(),这就是我得到的:

"fields":{"29411502":{"id":29411502,"name":"Date & Time","functionName":""}}

有人有主意吗?

您的样本在技术上不是有效的JSON,并且不会/不应由JSON.stringify()生成。 (它的属性名称周围缺少引号。)您可以告诉我们JSON.stringify()的实际输出是什么吗?

是的将获得输出1秒

香港专业教育学院更新后的字符串我得到。 应该已经包括它了。 但是为什么要投反对票呢?

您的更新不是语法上有效的JSON。 至少,它缺少结束符}。

没错-它是一个更大的对象,我把它弄错了,但不是问题

听起来像是在发布时,您没有使用text / javascript内容类型。 &amps永远不会为我converted依。

万一有人在乎解决方案:

我必须在字符串对象上encodeURIcomponenet()。

为我工作

的test.html

Click ME

(function($){

$('#bob').click(function() {

$.ajax({

method:"POST",

url:"test.php",

data: JSON.stringify([{"this":"is & test"}]),

contentType:"text/javascript"

}).done(function(a) {

alert(a);

});

});

})(jQuery);

test.php的

$data = file_get_contents("php://input");

var_dump($data);

var_dump(json_decode($data, true));

产生一个漂亮的弹出窗口

string(26)"[{"this":"is & test"}]"

array(1) {

[0] =>

array(1) {

'this' =>

string(13)"is & test"

}

}

这个:

var_dump(

json_decode(

'[

{"field_name":"Date & Time","some_other_value":"somevalue1"},

{"field_name":"Date & Time","some_other_value":"somevalue2"},

{"field_name":"Date & Time","some_other_value":"somevalue3"}

]'

),

json_last_error(),

PHP_VERSION

);

?>

结果是:

array(3) {

[0]=>

object(stdClass)#1 (2) {    ["field_name"]=>

string(15)"Date & Time"

["some_other_value"]=>

string(10)"somevalue1"

}

[1]=>

object(stdClass)#2 (2) {    ["field_name"]=>

string(15)"Date & Time"

["some_other_value"]=>

string(10)"somevalue2"

}

[2]=>

object(stdClass)#3 (2) {    ["field_name"]=>

string(15)"Date & Time"

["some_other_value"]=>

string(10)"somevalue3"

}

}

int(0)

string(17)"5.3.15-pl0-gentoo"

似乎对我来说...

如果删除了&字符,PHP脚本突然能够正确解码该对象吗?

是这样,您是否需要对&字符进行双重编码? 它是否有可能在剩余消息之前被解码并导致解析中断?

是如果我删除&它有效

在参数和值周围放置单引号

var object = [

{'field_name':'Date & Time', 'some_other_value':'somevalue1'},

....

不,那不是它。

根据JSON规范,应为双引号,而不是单引号。 参见例如:stackoverflow.com/questions/4201441/

哦,我的坏。日Thnx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值