AJAX PHP JSON编码未返回所有结果


AJAX PHP JSON encode not returning all results

我会简要介绍。。。我正要跳过

并非所有的结果都在中起作用

在文档标题中,我包括jquery-1.7.2.min.js-

我的查询:

"SELECT tableA.columns_xyz..., tableB.columns_xyz..., tableC.columns_xyz 
FROM tableB
JOIN tableC ON tableB.x = tableC.x
JOIN tableA ON tableB.x = tableA.x
WHERE tableA.x = '$query_value'
GROUP BY tableA.y
ORDER BY tableA.y DESC 
LIMIT 1";

问题1:

LIMIT 1更改为LIMIT 5或任何>1的内容,查询在phpmyadmin中执行良好,但不能通过ajax/json/php-执行

php:

$sql = above...
$result = $mysqli->query($sql);
while($row = mysqli_fetch_array($result)) {
echo json_encode(array($row['x'],$row['y'],....$row['z']));
$mysqli->close();

javascript:

$.ajax ({
    url: 'script.php',
    type: "post",
    dataType: "json",
    data: {value : $("#searchbox").val()},
    success: function(data) {
        var a = parseFloat(data[0]);
        var b = parseFloat(data[1]);
        var c = data[2];
            document.getElementById("blah1").innerHTML = a;
            document.getElementById("blah2").innerHTML = b;
            document.getElementById("blah3").innerHTML = c;
       }
});

html:

<td><span id="blah1"></span></td>
<td><span id="blah2"></span></td>
<td><span id="blah3"></span></td>

问题2:

有些元素正在打印到页面,有些则不然。我做错了什么?

问题3:

我知道我应该能够将document.getElementById("blah1").innerHTML;表示为$('#blah1');,但$('#blah1');不起作用。。。我不知道为什么。。。

将每一行存储在一个数组中,然后使用json_encode一次:

$store = array();
while($row = mysqli_fetch_array($result)) {
    $store[] = array('x'=>$row['x'], 'y'=>$row['y'], 'z'=>$row['z']);
}
echo json_encode($store);

然后您可以在客户端使用JSON.parse

var store = JSON.parse(data)

然后循环通过:

for(var x in store){
    $('#blah1').html(store[x]['x']);
}

你已经在使用jquery了,为什么不通过转换以下内容来充分利用它呢:

document.getElementById("blah1");

到其jquery版本:

$('#blah1');

只要确保这些元素是唯一的,因为您使用的是ID的

是否应该先创建一个对象,然后对整个批次进行json编码,而不是对每一行进行json单独编码?

我对sql不太好,但LIMIT大于1意味着你(可能)会返回多行,对吗?

如果是这样的话,那么您本质上是在一个响应中返回多个json响应,我认为您不应该这样做。