这里的想法是从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/

10-12 12:56
查看更多