1

我会简短...我要跳了

并非所有结果都有效

在我包含的文档标题中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 1LIMIT 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');就是不工作......我不知道为什么......

4

2 回答 2

1

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

我对 sql 不是很好,但是 LIMIT 大于 1 意味着您期望返回不止一行(可能),对吗?

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

于 2012-07-14T11:44:19.663 回答
1

将每一行存储在一个数组中,然后使用 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

于 2012-07-14T11:49:35.937 回答