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