Refresh table data with Ajax

时间:2017-02-28 作者:Pavanello

下面的脚本是我正在开发的一个实时问题审核系统。有人可以给我一个提示,让下面的脚本自动刷新查询和结果,可以每30秒刷新一次。也许是Ajax中的一些解决方案?

<?php
global $wpdb;
if (!empty($_POST)) {

$wpdb->query($wpdb->prepare("UPDATE wp_modera SET answered = \'Yes\' WHERE id=\'" . $_POST[\'id\']. "\'"  ));

}
?>

<script>

jQuery(document).ready(function($){
    $("#form1").on("change", "input:checkbox", function(){
        $("#form1").submit();
    });

    setInterval(function(){
        $.get(\'#form1\', function(data){
            //$("#form1").html(data).find(\'#form1\'); 
        });
    },3000);


});
</script>

<style>
table {width: 100%;}
table tr td {border-bottom: 1px solid #666; padding: 20px 0;}
table tr td:first-child {padding-right: 20px;}
table tr td .title {color: #315AA9;}
</style>

<form id="form1" method="post" action="http://example.com/test/" >
<table>
    <?php

    global $wpdb;
    $results = $wpdb->get_results( \'SELECT id, time, city, state, question, name FROM wp_modera WHERE release = "Yes" AND flag2 <> "PLT" AND answered = "No" ORDER BY time DESC\', OBJECT );

    foreach($results as $result){
        echo "<tr>";

        $phpdate = strtotime($result->time );
        $mysqldate = date( \'H:i:s\', $phpdate );

        echo "<td><strong class=\'title\'>" . $mysqldate . " - " . $result->name . " - " . $result->city . " / " . $result->state . \'</strong><br><br> <strong>Question: </strong>\' . $result->question . "</td>";
        echo "<td><input type=\'checkbox\' name=\'id\' value=\'" . $result->id . "\' /></td>";

        echo "</tr>";
    }

    ?> 
</table>
</form>

1 个回复
最合适的回答,由SO网友:marwyk87 整理而成

在wordpress中,您需要以特定的方式使用ajax来遵循标准https://codex.wordpress.org/Plugin_API/Action_Reference/wp_ajax_(action)

在函数中创建函数。php文件,用于处理表的数据检索和/或显示,并向wp_ajax_(仅对登录用户激发)和wp_ajax_nopriv_(还为客人点火)

add_action( \'wp_ajax_add_foobar\', \'prefix_ajax_add_foobar\' );
add_action( \'wp_ajax_nopriv_add_foobar\', \'prefix_ajax_add_foobar\' );

function prefix_ajax_add_foobar() {
    // Handle request then generate response using WP_Ajax_Response
    //generate table data and build table html here

    // Don\'t forget to stop execution afterward.
    wp_die();
}
一旦添加到功能中。php页面然后可以在脚本页面或单独的文件中包含JS

jQuery.post(
    ajaxurl, 
    {
        \'action\': \'add_foobar\',
        \'data\':   \'foobarid\'
    }, 
    function(response){
        alert(\'The server responded: \' + response);
    }
);
因此ajaxurl操作是指您在wordpress中注册的操作wp_ajax_wp_ajax_nopriv_. 如果你这样注册的话wp_ajax_nopriv_fill_my_table 您的ajaxurl操作将是fill_my_table

我还建议在JS函数中进行ajax调用,以便您可以在(document).ready()下面是另一篇与您的问题相关的帖子,回答得很好:Jquery ajax to custom php file: returning blank data

相关推荐

自定义模板earch.php中的搜索结果

现在我在搜索结果页面(search.php)中遇到了一个问题,结果是由索引页面模板显示的,而不是它的模板,它显示所有帖子,不管搜索者是否输入了内容我的索引。php页面<?php get_header(); ?> <?php $search = $_get[\'search\']; $args = array( \'post_title_like\' => $search ); $res = new wp_query($args