我有一个 mysqli 查询,当我使用下面的代码使用自动刷新时,它仅返回所有行的最后一条记录的值,如果我不使用自动刷新,那么它工作正常。当我使用自动刷新时我面临的唯一问题。
$(document).ready(function(){
refreshTable();
});
function refreshTable(){
$('.tableHolder').load('itemtotal_cart_checkout.php', function(){
setTimeout(refreshTable, 1000);
});
}
我该如何解决这个问题,请帮忙。
$ses_mem = $_SESSION['ses_user_id'];
$getItem = $_GET['item_id'];
$order_temp = "select * from temp_cart where item_id='".$getItem."' AND ses_mem='".$ses_mem."' order by id";
$tordera = $db->query($order_temp);
$torder = $tordera -> fetch_assoc();
最佳答案
您的 PHP 代码需要 item_id
GET 参数。所以你应该从 JavaScript 传递它:
$('.tableHolder').load('itemtotal_cart_checkout.php?item_id=' + itemId,
function(){
setTimeout(refreshTable, 1000);
});
以下是如何从 JavaScript 中的当前查询字符串获取 item_id
:
var m = location.search.match(/^.*[\?&]item_id\=(\d+)/);
var itemId = m && m.length >= 2 ? m[1] : 0;
但是,如果当前页面是 PHP 和 HTML 以及上述 JavaScript 的混合体,那么只需将 PHP 嵌入到 JavaScript 中即可:
<script>
/* skipped original code */
$('.tableHolder').load('itemtotal_cart_checkout.php?item_id=' + <?php
echo isset($_GET['item_id']) ? (int) $_GET['item_id'] : 0;
?>,
function(){
setTimeout(refreshTable, 1000);
});
/* skipped original code */
</script>
最后,如果 JavaScript 在单独的文件中执行,那么您需要一个带有项目 ID 参数的 JavaScript 函数。例如,在某些 script.js 中,您可能具有类似于以下内容的函数:
function refreshTable(itemId) {
$('.tableHolder').load('itemtotal_cart_checkout.php?item_id=' + itemId, function() {
setTimeout(function () { refreshTable(itemId) }, 1000);
});
}
然后你可以这样从 PHP 调用它:
<script>
$(document).ready(function(){
refreshTable(<?php echo isset($_GET['item_id']) ? (int) $_GET['item_id'] : 0; ?>);
});
</script>
顺便说一句,您可能想使用 setInterval
而不是递归调用 setTimeout
。
关于javascript - 当我使用自动刷新时,Php mysql 仅返回最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39940366/