如何使用AJAX更新前端表单

时间:2019-11-16 作者:markb

我正在尝试构建自己的前端AJAX更新屏幕镜像界面。

我有一个非常基本的形式:

<form id="mblocation">
    <input type="radio" name="mb_user_location" id="mb_user_location1" value="1" checked="checked">
    <label for="mb_user_location1">
        <span>in office</span>
    </label>

    <input type="radio" name="mb_user_location" id="mb_user_location2" value="2">
    <label for="mb_user_location2">
        <span>out of office</span>
    </label>

    <input type="hidden" name="mb_user_id" value="1">
    <input type="hidden" id="mb_location_nonce_field" name="mb_location_nonce_field" value="6b8a75521b">
    <input type="hidden" name="_wp_http_referer" value="/inout/">
</form>
我希望每个x 秒数取决于管理员在选项页中设置的时间get_option(\'mb_heartbeat_time\'):

function mb_ajax_updater( mb_heartbeat_time ) {

    // get the user id
    var mb_user_id = $(\'input[name="mb_user_id"]\').val();

    // get the user current location
    var mb_user_location_current = \'<?= get_user_meta( get_current_user_id(), \'mb_user_location_current\', true ); ?>\';

    // get the current :checked location
    var mb_user_location_checked = $(\'input[name="mb_user_location"]:checked\').val();

    // is the saved location and the checked the same
    if( mb_user_location_current ==  mb_user_location_checked ) {

        // log the result
        console.log( \'Result: same location!\' );

    } else {

        // save the new meta
        // how to get the current location?
        // how to get the previous location?
        <?php update_user_meta( get_current_user_id(), \'mb_user_location_current\', ????? ); ?>
        <?php update_user_meta( get_current_user_id(), \'mb_user_location_previous\', ????? ); ?>

        // update the view
        $("input#mb_user_location" + mb_user_location_checked ).prop( "checked","checked" );

    }

    // set the timer
    setTimeout( mb_ajax_updater, mb_heartbeat_time );
}

// run it first time
mb_ajax_updater( <?= get_option(\'mb_heartbeat_time\'); ?> );
但我不确定我该从这里走到哪里。如何验证从get_current_user_id? 如何添加phppart,以便update_user_meta 是否将更新?有没有比我正在尝试的更好的方法?

我只想在一个屏幕更新时,在设置分配的时间内将其反映到另一个屏幕上。

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

我的解决方案是:

<script>
var mb_user_location_current = ...
...
</script>
然后使用head 到函数。

但后来又冒险走上其他道路,寻求不同的解决方案。

相关推荐

如何在PHP文件/WordPress插件中访问jQuery/AJAX数据

我有一个jQuery UI可排序列表,连接到另一个列表,到目前为止,我的JavaScript可以将两个列表中的HTML ID显示到屏幕上,但我很难确定如何将这些数据定向到PHP文件,以便使用它。是wp_localize_script 对我来说有必要吗?我把它指向ajaxurlplugins_url( \'my-ajax.php\' ). 是否需要转到admin_url( \'admin-ajax.php\' )?我试图在我创建的管理页面上使用它,而不是在前端。这非常令人困惑。这就是我在WordPress中