这里的想法是从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()
。看来这是一个很常见的问题,但是我还没有找到解决方案。任何帮助,将不胜感激。谢谢。
最佳答案
您不能分别json_encode()
每个项目。您要发送到浏览器的数据不是有效的JSON,仅是有效JSON的许多小块。在循环内构建一个数组,然后对整个事情进行编码。另见http://jsonlint.com/
<?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 - JavaScript无法从PHP json_encode找到JSON数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34142795/