使用预设值初始化第一个Ajax数据,然后从成功响应中传递它

时间:2018-07-20 08:53:05

标签: php jquery json ajax

由于lastID不起作用,我怎么只能在第一次使用值 0 初始化jquery中的var lastID = 0;

我在index.php中有这个ajax脚本

<script>
        $(document).ready(function () {
            var lastID = 0;
            function getData() {
                $.ajax({
                    type: 'GET',
                    url: 'data.php',
                    data: {lastID: lastID},
                    dataType: 'json',
                    success: function (data) {
                        lastID = data[0].id;
                        console.log(lastID);
                            $.each(data, function (i, item) {
                                var $tr = $('<tr>').append(
                                        $('<td>').text(item.id),
                                        $('<td>').text(item.name),
                                        $('<td>').text(item.details)
                                        ).appendTo('#output');
                            });



                    }
                });
            }


            getData();


            setInterval(function () {
                getData();
            }, 10000);  // it will refresh your data every 10 seconds

        });
    </script>

这是url: 'data.php'

$sql = "select * from oders where id > ".$lastID." ORDER BY id DESC"; ... echo json_encode($dataArray);

通过该查询,我得到0个结果,并且在控制台(console.log(lastID);)中,我没有数据。

如果我这样更改查询:

$sql = "select * from oders where id > 0 ORDER BY id DESC";

console.log(lastID);中,我得到了正确的最后一个ID。在html中,我得到了正确的数据,并且每隔10秒钟就会不断添加相同的结果。

我不知道如何首次将lastID初始化为0(或数据库中的最后一个ID),并且每隔10秒刷新一次,就从ajax成功数据中获取最后一个ID。

1 个答案:

答案 0 :(得分:0)

您的$lastID变量来自何处,如何定义?

您似乎没有从$_GET数组中获得正确的值。

要解决该问题和sql注入问题,您应该做的是切换到准备好的语句:

$sql = "select * from oders where id > ? ORDER BY id DESC";

并在执行查询之前/期间将$_GET['lastID']绑定到占位符(取决于您使用的是mysqli还是PDO)。