你好,我对在javascript中序列化的JSON的反序列化有问题。我在网页上有表单,每一行都是一个产品(输入、选择、表格中的复选框):
name, price, total_count, ...
name2, price2, total_count2, ...
...我采用一个表单并使用javascript对其进行序列化(函数ajaxLoad是普通缩短的jQuery函数$.ajax(.)它能在其他地方正常工作)
var form = $('#myForm');
form.submit(function(event){
event.preventDefault();
ajaxLoad(
form.attr('action'),
form.parent(),
{jsonData : JSON.stringify(form.serializeArray())}
);
});在php中,接收数据,我的代码如下:
$data = json_decode($jsonData, true);
$this->template->data = print_r($data,1);它返回的内容如下:
Array
(
[0] => Array
(
[name] => products[0][cor_projectProduct_name]
[value] => 1ks Replika Kádnerova jáchymovského tolaru stand BJ
)
[1] => Array
(
[name] => products[0][url]
[value] => http://some-nice-url.cz
)
[2] => Array
(
[name] => products[0][cor_projectProduct_ean]
[value] =>
)
[3] => Array
(
[name] => products[0][cor_projectProduct_internalCode]
[value] =>
)
[4] => Array
(
[name] => products[0][cor_project_id]
[value] => 6
)
[5] => Array
(
[name] => products[0][cor_projectProduct_keywordAllowed]
[value] =>
)
...但是我想要一系列的物体。
我也尝试过用form.serialize序列化表单,但是返回的结果更糟糕--被编码的字符串,我无法解码。
当我尝试通过POST方法作为数组发送数据,然后在php中从$_POST读取数据时,它工作正常,但是由于POST限制而丢失了一些数据,所以最好将其作为序列化字符串发布,但是我不知道如何在php中反序列化它。
编辑: OK,可能解释得很糟糕,因此我需要的是对象数组:
Array
(
[0] => stdClass Object
(
[cor_projectProduct_name] => 1ks Replika Kádnerova jáchymovského tolaru stand BJ
[url] => http://www.ceske-mince.cz/ceska_mincovna/1997/replika-kadnerova-jachymovskeho-tolaru-stand/
[cor_projectProduct_ean] =>
[cor_projectProduct_internalCode] =>
[cor_project_id] => 6
[cor_projectProduct_keywordAllowed] =>
...
)
[1] => stdClass Object
(
[cor_projectProduct_name] => 1ks Replika Kádnerova jáchymovského tolaru stand BJ
...
)
...或者与关联数组一样,这并不重要。
发布于 2014-10-20 15:30:34
好吧,我想好了该怎么做:
在javascript中,除数据行外,其他所有内容都必须更改为:
{jsonData : JSON.stringify(form.serialize())}在PHP中,我可以在调用parse_str()函数之后访问可接受的数据,所以应该如下所示:
public function actionSubmitedImportedProducts($jsonData){
parse_str(json_decode($jsonData));
$this->template->data = print_r($products,1);
}天哪,太逊了:-D.
发布于 2014-10-17 17:16:11
若要获取对象而不是数组,请使用
$data = json_decode($jsonData, true);而不是
$data = json_decode($jsonData, false);发布于 2014-10-17 17:02:31
也许看看这个答案..。
基本上,您可以将数组(在json_decode之后)转换为对象。
https://stackoverflow.com/questions/26429906
复制相似问题