之前我通过执行以下操作成功访问了回调jquery ajax函数中的php数组:
$.post('ajax.php', {name: name}, function(data) {
var obj = jQuery.parseJSON(data);
var item = obj[6]
使用php:
$sql = "SELECT * FROM sales WHERE email = 'test' AND item = '$name' ";
$result = mysqli_query($conn, $sql);
if ($result){
$row = mysqli_fetch_array($result);
echo json_encode($row);
}
我现在有一个稍微不同的情况,我不会想到这个问题,但非常多:
PHP
$sql = "SELECT * FROM sales WHERE ".$searchwithin." BETWEEN '2017-02-01' AND '2017-03-01'";
$result = mysqli_query($conn, $sql);
if ($result){
while ($row = mysqli_fetch_assoc($result)){
echo json_encode($row);
}
当我执行以下Jquery时:
var obj = data.length;
alert(obj);
我得到一个可笑的高数字,它告诉我它是字符串长度而不是数组长度;所以我猜这是第一个问题,尽管看似复制成功的过去ajax,我现在得到一个字符串返回而不是数组。
最后,我猜这与第一个问题有关,每当我使用
时var obj = jQuery.parseJSON(data);
它根本不喜欢它;我要么什么也得不到,甚至没有警报,或者我确实收到了“未定义”的警报。
该数组应包含八个左右的mysqli表行,其中包含十五列;我相信我然后可以使用例如OBJ [5] [7]。但我还不能尝试,因为它返回一个字符串,似乎不是一个数组。顺便提一下,我是新手,并提前致谢。
哦,如果我只是做警报(数据),这就是我得到的:
{“id”:“8”,等等}
答案 0 :(得分:1)
当您在循环中解码ajax时,您有许多对象而不是一个。你的ajax会得到类似{some rom} {some row1} {some row2}
的回复你需要创建数组并将数据循环插入其中,并解码它的数组
$myArray = array();
if ($result = $mysqli->query("SELECT * FROM phase1")) {
while($row = $result->fetch_array(MYSQL_ASSOC)) {
$myArray[] = $row;
}
echo json_encode($myArray);
}