我会很简短......我准备跳
并非所有结果都有效
在文档标题中我包含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');
不起作用......我不知道为什么......
答案 0 :(得分:1)
你是不是要创建一个对象然后json编码整个批次,而不是json编码每一行seperatley?
我对sql不是很好但是LIMIT大于1意味着你希望多回一行(可能),对吗?
如果是这样,那么你基本上在一个回复中返回多个json响应,我认为你不应该这样做。
答案 1 :(得分: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