我有这个AJAX
SELECT id,Description
FROM sample_for
WHERE CHARINDEX('@', Description) > 0
这个php
$.ajax({
type: "GET",
url: '../connect.php',
data: "OrB=" + ajaxsend+"&&IOr="+i,
success: function(data)
{
var x = $.parseJSON(data);
for (var i = 0; i <= 4; i++) {
var el='<div class="Ordb">\
<img src="../users/'+x[i][0]+'">\
<span>'+x[i][1]+'</span>\
<span class="s2">'+x[i][2]+'</span>\
</div>'
$(".F_W_comments").children().remove();
$(".F_W_comments").html(el);
}
}
});
我的问题是AJAX在控制台中给我错误
if (isset($_GET['OrB'])) {
$OB=$_GET['OrB'];
$I=$_GET['IOr'];
if ($OB=='OO') {
$OB='`Date` ASC';
}else if ($OB=='No') {
$OB='`Date` DESC';
}
$query=$con->query("SELECT id,comment FROM uploads WHERE Rand='$I'");
$row=$query->fetch_row();
$Commentsq=$con->query("SELECT * FROM comments WHERE Post_id='$row[0]' ORDER BY $OB LIMIT 4") or die($con->error);
$commenters = array();
while ($CommentRow=$Commentsq->fetch_row()) {
$CommenterPp=$con->query("SELECT Profile_pic FROM user_opt WHERE Username='$CommentRow[3]'");
$CommenterPicture=$CommenterPp->fetch_row();
$CommenterPp=$con->query("SELECT Username FROM users WHERE Id='$CommentRow[3]'");
$CommenterName=$CommenterPp->fetch_row();
$commenters[] = array($CommenterPicture,$CommenterName,$CommentRow[1]);
}
echo json_encode($commenters);
}
指着这一行
Uncaught TypeError: Cannot read property '0' of undefined
此外我得到1个元素而不是4.Have我的代码中有任何错误,因为它工作错误
答案 0 :(得分:0)
首先,更改您的JavaScript。在循环遍历数组时,切勿硬编码for循环的长度。使用i&lt; x.length而不是i <= 4.顺便说一句; i&lt; = 4循环5次,所以如果你期望一个长度为4的数组回来,你仍然会超过数组的长度;这将抛出相同的错误(未定义)。
我不知道为什么你的PHP脚本只返回1个元素,我看不到你的数据库。如果在分配x后立即放置console.log(x),您将在浏览器控制台中看到结果。
我也建议您将PHP代码中的值放在关联数组中,这会使客户端返回的JSON更好地读取(并且不易出错):
$commenters[] = array('picture' => $CommenterPicture, 'name' => $CommenterName,.....);