我有一个循环浏览产品及其数据的php循环:
<?php foreach ($this->products as $product) { ?>
<script type=text/javascript>
product = {
id: $product->virtuemart_product_id,
name: $product->product_name
};
</script>
<?php } ?>
数据包含有关产品的信息,而非产品如下:
是否可以将数据添加到每个循环中的现有javascript数组或对象? 基本上它会将循环数据添加到javascript数组或产品中。
任何帮助将不胜感激:)
答案 0 :(得分:8)
有一种更好,更干净的方式,使用json_encode
PHP
<?php
$data = array();
foreach( $this->products as $product ) {
$data[] = array(
"id" => $product->virtuemart_product_id,
"name" => $product->product_name
);
}
?>
<强> HTML 强>
<script type=text/javascript>
var product = <?php echo json_encode( $data ) ?>;
</script>
您也可以使用
var product = <?php echo json_encode( $product ) ?>;
因此,当您想使用javascript访问product
时,您的代码将是
<script type="text/javascript">
for( i in product ) {
console.log( product[i] );
}
</script>
答案 1 :(得分:2)
您可以使用php函数json_encode:
来使用json<script type='text/javascript'>
<?php
$products = $this->products;
$js_array = json_encode($products);
echo "var products = ". $js_array . ";\n";
?>
</script>
另一种做同样事情的方法:
<script type="text/javascript">
var products= <?php echo json_encode($products); ?>;
for(var i=0;i<n;i++)
{
alert(products[i]);
}
</script>
答案 2 :(得分:2)
<script type=text/javascript>
var x, productArray = [];
<?php foreach ($this->products as $product) { ?>
x = {
id: <?php print $product->virtuemart_product_id; ?>,
name: <?php print $product->product_name; ?>
};
productArray.push(x);
<?php } ?>
</script>
答案 3 :(得分:1)
那是怎么回事:
<script type=text/javascript>
var products= array();
<?php foreach ($this->products as $product) {
echo "product.push({
id: $product->virtuemart_product_id,
name: $product->product_name
});" ;
?>
</script>
答案 4 :(得分:0)
不要在循环中使用脚本标记,而是为每个产品构建一个包含id / name的PHP数组,然后在循环外部使用json_encode()。然后将其提供给您的JavaScript。
答案 5 :(得分:0)
使用.push()
可以将元素附加到数组:
var products = [{
name: 'Product 1',
id: 1
}, {
name: 'Product 2',
id: 2
}]
所以,如果你想从你的循环中将元素追加到products
数组:
products.push({
id: <?php echo $product->product_id; ?>,
name: '<?php echo $product->product_name; ?>'
});
答案 6 :(得分:0)
我的解决方案:
<?php foreach ($this->products as $product) { ?>
<script type=text/javascript>
product = {
id: <?=json_encode($product->virtuemart_product_id)?>,
name: <?=json_encode($product->product_name)?>
};
</script>
<?php } ?>