我正试图将我在JS中创建的这个数组转换为在foreach中使用的数组,并使用数组的数据。我使用的是框架代码点火器。
这里是我在JS文件中创建数组的地方。
function get_array(){
var datos = []; // Array
$("#tbl_esctructura tbody > tr").each(function() {
var item = $(this).find('td:eq(1)').text();
var cantidad = $(this).find('td:eq(4)').text();
datos.push({
"item": item,
"cantidad": cantidad
});
});
datos = JSON.stringify(datos);
$.ajax({
data: {
'datos': datos
},
url: "<?php echo base_url() ?>Controller/data_from_array",
type: 'POST',
dataType : "json",
success: function(response) {
}
});
}
我发送给控制器的数据是这样的。[{"item":"1","cantidad":"2"},{"item":"2","cantidad":"4"}]
现在我的控制器PHP
public function data_from_array(){
$data = $this->input->post('datos', TRUE);
$items = explode(',', $data);
var_dump($items);
foreach ($items as $row) {
echo $row->item.'<br>';
}
}
和var_dump($items)
,这是的结果
array(2) { [0]=> string(12) "[{"item":"1"" [1]=> string(16) ""cantidad":"1"}]" }
}
在这个回波中,我得到了这个错误Message: Trying to get property 'item' of non-object
我不知道我做错了什么
看起来像一个标准的JSON。请确保在json_decode函数(第二个参数(中添加true,以返回数组而不是对象。
$result = json_decode($data, true);
看看JSON,因为这是当今网络和移动应用程序数据交换的标准,并了解更多关于函数的信息:
https://www.php.net/manual/en/function.json-decode.php
还可以查看将数组编码为JSON格式的对应文件:
https://www.php.net/manual/en/function.json-encode.php
您可以将此代码用作分解返回数组,而不是对象。
public function data_from_array(){
$data = $this->input->post('datos', TRUE);
$items = explode(',', $data);
var_dump($items);
foreach ($items as $row) {
echo $row["item"].'<br>';
}
有两种情况:
-
如果您想解析JSON对象,那么
$items = json_decode($data); // instead of $items = explode(',', $data);
-
如果您想将数据视为字符串,则
echo $row[0].'<br>'; // instead of echo $row->item.'<br>';