这里的想法是使用MySQL数据库表中的某些产品自动加载(或加载)我的索引页面。
首先,我的PHP。
<?php
header('Content-Type: application/json');
require_once 'classloader.php';
$db = new Database();
$items = $db->getRows('SELECT * FROM products');
foreach($items as $eachItem){
$itemsJSON = new Item($eachItem->product_name, $eachItem->product_quantity, $eachItem->product_cost);
echo json_encode($itemsJSON);
}
这似乎工作得很好,并且给了我两个正确编码的Item类的JSON对象。
{"name":"Slippers","quantity":"3","cost":"4.00"}
{"name":"Gloves","quantity":"5","cost":"9.00"}
我的JavaScript看起来像这样(以及许多其他类似的变体)
$(document).ready(function () {
$.post( "productloader.php", function( data ) {
$( "#result" ).html( data );
});
});
我不确定为什么它不起作用。我不想使用$.getJSON()
因为没有要使用的查询字符串,所以我假设我需要$.post()
。
这似乎是一个非常常见的问题,但我还没有找到解决方案。任何帮助,将不胜感激。谢谢。
答案 0 :(得分:5)
您不能分别(define (count-zeroes-of-even lst)
(count-zeroes-of
(lambda (lst) ;;to bad we can't do partial application
(take-every-Xnth-at-y 2 1 lst))
lst)
每个项目。您发送到浏览器的数据不是有效的JSON,只是许多小块的有效JSON一个接一个。在循环中构建一个数组,然后编码整个数组。另请参阅http://jsonlint.com/
json_encode()
答案 1 :(得分:2)
在AJAX
的方法中,您输出多个JSON
字符串,而js端则需要1个字符串(data)
。尝试将for循环删除到:
echo json_encode($items);
答案 2 :(得分:1)
您正在为每一行创建JSON,因此您将为前端的每一行获取单独的JSON对象。
您应该将所有行放入to和array并在循环外创建JSON对象,并回显编码的JSON字符串。
<?php
$allitem = $db->getRows('SELECT * FROM products');
$itemArr=array();
foreach($allitem as $item){
array_push( $itemArr , new Item($item->product_name, $item->product_quantity, $item->product_cost) );
}
echo json_encode($itemArr);
?>
或
$allitem = $db->getRows('SELECT * FROM products');
echo json_encode($allitem );