簡體   English   中英

AJAX Json使用for循環從PHP獲取數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM