[英]AJAX Json get data from PHP with for loop
我有這個AJAX
$.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);
}
}
});
而這個PHP
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);
}
我的問題是AJAX給我控制台錯誤
Uncaught TypeError: Cannot read property '0' of undefined
指向這條線
<img src="../users/'+x[i][0]+'">\
我也返回了1個元素而不是4個元素。我的代碼中有任何錯誤,因為它工作不正確
首先,更改您的JavaScript。 遍歷數組時,切勿硬編碼for循環的長度。 使用i <x.length而不是i <= 4。 i <= 4循環5次,因此,如果您期望長度為4的數組返回,則無論如何您都會遍歷數組的長度; 這將引發相同的錯誤(未定義)。
我不知道為什么您的PHP腳本只返回1個元素,我看不到您的數據庫。 如果在分配x后立即放置console.log(x),則會在瀏覽器控制台中看到結果。
我也建議您將值放在PHP代碼中的關聯數組中,這樣可以使返回的JSON在客戶端更易於閱讀(並且更不容易出錯):
$commenters[] = array('picture' => $CommenterPicture, 'name' => $CommenterName,.....);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.