在php中显示javascript中的数组
我在javascript中创建了一个数组,包含两列id和数量在php中显示javascript中的数组,javascript,php,arrays,Javascript,Php,Arrays,我在javascript中创建了一个数组,包含两列id和数量 items.push({ id : id, quantity: quantity }) 然后我使用stringify将其转换为jsonstring,如图所示 var jsonString = JSON.stringify(items); $.ajax({ type: "POST", url: &
items.push({
id : id,
quantity: quantity
})
然后我使用stringify将其转换为jsonstring,如图所示
var jsonString = JSON.stringify(items);
$.ajax({
type: "POST",
url: "order_process.php",
data: {data : jsonString},
cache: false,
success: function(){
window.location.href = "order_confirmation.php";
}
});
然后我将其发布到php,并使用json_解码将其转换为php数组。如图所示
$_SESSION['cart'] = json_decode( $_POST['data'] );
问题是,当我在php中使用print_r()函数时,这就是我得到的输出
Array (
[0] => stdClass Object ( [id] => 12 [quantity] => 1 )
[1] => stdClass Object ( [id] => 13 [quantity] => 1 )
[2] => stdClass Object ( [id] => 10 [quantity] => 1 )
)
我想要的输出如下图所示,但我不知道如何格式化,所以我得到了如图所示的输出
身份证件
量
12
1.
13
2.
使用
true
作为json\u decode()
的第二个参数来获取数组而不是对象。然后循环创建表:
$_SESSION['cart'] = json_decode( $_POST['data'], true );
echo '<table><tr><th>ID</th><th>Quantity</th></tr>';
foreach ($_SESSION['cart'] as $item) {
echo '<tr><td>'.$item['id'].'</td><td>'.$item['quantity'].'</td></tr>';
}
echo '</table>';
$\u SESSION['cart']=json\u decode($\u POST['data'],true);
回声“IDQuantity”;
foreach($\会话['cart']作为$item){
回显“.$item['id'..”.$item['quantity'.]”;
}
回声';
您在JS中所做的并不是像在PHP中那样创建关联数组
实际上,您正在执行JSON解码时得到的操作:推送(附加到数组)一个具有两个属性的对象(大括号)
在PHP中输出数组可以执行以下操作之一:
- 在PHP中使用您拥有的并使用对象进行迭代
- 传递两个常规JS数组-一个带有ID,另一个带有数量
无论如何,您都需要知道如何用HTML包装数据,以便实际显示表。@MonoConman“问题”是什么?您到底在尝试什么导致没有输出?
print\r()
用于调试,而不是为最终用户格式化信息。foreach($\u SESSION['cart']as$item){//print table row from$item}
您正在重定向到order\u confirmation.php
,因此,您根本不应该看到order\u process.php
脚本的输出。很抱歉,它会转到order\u process,将其存储为会话变量,然后通过order\u确认来显示它。为什么需要数组而不是对象?您可以对$item->id
和$item->quantity
执行相同的操作,但我认为这会混淆op。因此,通过演示如何访问对象属性来消除他的混淆!我刚刚注意到他的success
函数重定向了,所以AJAX脚本的输出甚至没有显示出来。非常感谢这对我起到了作用