我正在开发一个电子商务网站。 javascript中的数组“产品”由以下代码
定义<script type="text/javascript">
var products =
[
{"id":"1","title":"Apple iPhone 4"},
{"id":"2","title":"BlackBerry 9780 Bold"}
];
/*some other javascript code*/
</script>
我希望根据查询数据库返回的行数动态更新此数组。 例如,假设我查询数据库并返回5行。我希望用这5行更新这个数组。请帮我完成这件事。我在Windows机器上使用PHP,MySQL,Apache。
答案 0 :(得分:2)
您需要push
功能:http://www.w3schools.com/jsref/jsref_push.asp
var products =
[
{"id":"1","title":"Apple iPhone 4"},
{"id":"2","title":"BlackBerry 9780 Bold"}
];
// Let's add a new phone:
products.push({"id":"3","title":"HTC Evo"});
/*
products now equals:
[
{"id":"1","title":"Apple iPhone 4"},
{"id":"2","title":"BlackBerry 9780 Bold"},
{"id":"3","title":"HTC Evo"}
];
*/
为了说明您可能拥有现有数组的可能性并且您想通过ajax更新它,您可以使用PHP动态执行此操作:
<script type="text/javascript">
<?php foreach($phones as $phone): ?>
products.push({"id":"<?=$phone['id']?>","title":"<?=$phone['name']?>"});
<?php endforeach; ?>
</script>
答案 1 :(得分:1)
top answer to the question JSON encode MySQL results可以为您实现这一目标:
$sth = mysql_query("SELECT ...");
$rows = array();
while($r = mysql_fetch_assoc($sth)) {
$rows[] = $r;
}
print json_encode($rows);
在您的情况下,用
替换最后一行?>
var products = <?php echo json_encode($rows); ?>;
<?php
会使用您的查询结果初始化JavaScript对象。这需要在加载页面之前完成,因为PHP在服务器上运行,为客户端生成JavaScript。如果您需要在加载客户端页面后获得结果,则需要更复杂的解决方案,可能使用AJAX。
答案 2 :(得分:0)
我会创建一个服务器端脚本,它与数据库建立连接,得到产品,然后为你构建JSON,这样你所要做的就是从客户端向脚本发出一个AJAX请求,它将返回您在网页上使用的所有内容。
答案 3 :(得分:0)
您可以使用PHP将json直接输出到页面中。
假设$data
是包含您要输出的产品的数组。
在模板中你会做这样的事情:
<script type="text/javascript">
var products = <?php echo json_encode($data) ?>;
</script>
答案 4 :(得分:0)
products[products.length] = {..some data..};
products.push({..some data..});
或者您还需要其他东西吗?