JavaScript无法从PHP JSON_encode中找到JSON数据
这里的想法是使用MySQL数据库表中的一些产品自动加载或在我的所有索引页上加载 首先,我的PHPJavaScript无法从PHP JSON_encode中找到JSON数据,javascript,php,json,ajax,Javascript,Php,Json,Ajax,这里的想法是使用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){ $itemsJS
<?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);
}
我的JavaScript看起来像这样,还有许多其他类似的变体
$(document).ready(function () {
$.post( "productloader.php", function( data ) {
$( "#result" ).html( data );
});
});
我不知道为什么它不起作用。我不想使用$.getJSON,因为没有可使用的查询字符串,所以我假设我需要$.post
这似乎是一个相当普遍的问题,但我还没有找到解决办法。任何帮助都将不胜感激。谢谢。您不能对每个项目单独编码。发送到浏览器的数据不是有效的JSON,只是一个接一个的有效JSON的许多小块。在循环中构建一个数组,然后对整个过程进行编码。另见
在AJAX方法中,输出多个JSON字符串,而js端需要1个字符串数据。尝试删除for循环以仅执行以下操作:
echo json_encode($items);
您正在为每一行创建JSON,因此前端的每一行都有单独的JSON对象 您应该将所有行放入and数组,并在循环外部创建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);
?>
您是否在浏览器控制台中观看了AJAX请求/响应?是否有任何错误?一旦AJAX请求从echo json_encode$itemsJSON;接收到第一个成功结果;,它停止侦听响应,并且在JavaScript中会忽略foreach循环的所有后续迭代。您需要将每个项添加到一个数组中,然后返回经过json_编码的完整数组。我认为不应该在循环中包含此项:json_encode$itemsJSON-它应该在外部。
echo json_encode($items);
<?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 );