JavaScript无法从PHP json_encode中找到JSON数据

时间:2015-12-07 20:41:05

标签: 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){
    $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()

这似乎是一个非常常见的问题,但我还没有找到解决方案。任何帮助,将不胜感激。谢谢。

3 个答案:

答案 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 );