簡體   English   中英

如何在JavaScript和PHP中遍歷對象

[英]How to Iterate through Object in JavaScript and PHP

我必須解決一個涉及JS和PHP中的代碼的問題。 由於某種原因,無論何時執行此代碼,它都會將第一個條目放置在表的所有行中,而不是遍歷每個條目並將它們全部放入行中。 希望有人能為我提供有關如何解決此問題的真知灼見。 可以僅通過“ for in”循環來解決此問題嗎? 提前致謝。

 <?php include('../../functions.php'); $query = " SELECT * FROM plobby LEFT JOIN users ON users.UID = plobby.UID WHERE `LID` = '". preg_replace("/[^A-Za-z0-9 ]/", '', $_POST['id']) ."'; "; $sql = "SELECT COUNT(`LID`) AS `x` FROM `snipe`.`plobby` WHERE LID = '".$_POST['id']."';"; $result = $db->query($query); $rst = $db->query($sql); $cnt = 0; if($rst->num_rows > 0) while($row = $rst->fetch_assoc()) $cnt = $row["x"]; if ($result->num_rows > 0) for($i = 1;$i<= $cnt;$i++) echo json_encode($result->fetch_assoc()); else echo json_encode([]); ?> 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 

這是上面的循環所引用的對象:

 <script type="text/javascript"> var state = {}; for($i = 1;$i <= <?php echo getLobbytPlayers($_GET['id']);?>;$i++ ){ var reloadTable = function (data) { if ($.data(state) == $.data(data)) { return; } $('#js-lobby-table').empty(); $.each(data, function (rowNumber, rowData) { var row = $('<tr>'); console.log(data); // Player row.append($('<td>', { 'html': data.eName })); // Status row.append($('<td>', { 'html': data.gameID == "000" ? 'waiting' : 'ingame' })); // Win % row.append($('<td>', { 'html': 'TODO' })); // Games row.append($('<td>', { 'html': 'TODO' })); // K/D row.append($('<td>', { 'html': 'TODO' })); $('#js-lobby-table').append(row); }); // Set the current table state. state = data; }; } setInterval(function () { $.ajax({ type: 'POST', url: '/lobby/api/table.php', data: { id: '<?= $_GET['id'] ?>' }, success: reloadTable, dataType: 'json' }); }, 10); </script> 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 

您不應多次調用json_encode() 響應必須包含一個JSON對象,而不是多個對象。 您需要將所有結果放入一個數組中,最后在該數組上調用json_encode()

也沒有必要先獲得計數。 只需調用fetch_assoc()直到獲得所有結果即可。

<?php include('../../functions.php');

    $query = "
    SELECT
    *
    FROM
    plobby
    LEFT JOIN users ON users.UID = plobby.UID
    WHERE
    `LID` = '". preg_replace("/[^A-Za-z0-9 ]/", '', $_POST['id']) ."';
    ";

    $result = $db->query($query);

    $rows = [];

    while ($row = $result->fetch_assoc()) {
        $rows[] = $row;
    }
    echo json_encode($rows);
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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