Ajax仅在页面重新加载后提供数据

时间:2019-02-09 11:20:28

标签: php jquery ajax

我正在尝试为博客的非活动文章创建通知按钮,并且我不希望管理员重新加载他/她的页面以查看提交的新非活动文章,所以我想使用AJAX来实现。

我将html数据添加到:
<ul id="menu1" class="dropdown-menu list-unstyled msg_list" role="menu">

但是我的代码仅在页面重新加载后才加载新结果。
而且,每个循环都重复相同的数据2次。

怎么了?

<script>
    $.ajax({
    type: "POST",
    url: 'inc/file.php',
    dataType: 'json',
    success: function(response)
    {
        if (response) {

            var html = '';
            $.each(response, function(key, value){
                html += "<li><a href='editArticle?id="+response.id+"&amp;act='><span>"+response.title+"</span><span>"+response.story+"</span></a></li>";

            })
            $('#menu1').prepend(html);
            $('#number').text(response.number);

        }
    }
});
</script>

这是我的file.php,仅提取一个数据:

<?php 

require $_SERVER['DOCUMENT_ROOT'].'/config/init.php';

require CLASS_PATH.'article.php';

$article = new Article();

$list = $article->getInactiveArticle();
$number = $article->countInactiveArticle();

$output = [];
foreach ($list as $lists) {
    $output['title'] = $lists->title;
    $output['id'] = $lists->id;
    $output['story'] = $lists->story;
    $output['number'] = $number[0]->inactive_articles;
}

echo json_encode($output);

2 个答案:

答案 0 :(得分:1)

尝试使用setTimeout()功能。

function timeout() {
  setTimeout(function(){ 
    $.ajax...

    timeout()
  }, 3000);

}

Have a look docs here

答案 1 :(得分:1)

您可以测试以下代码块。

每5秒钟检查一次并执行操作。

onload