在wordpress中使用查询“ jeditable”来更新表格

时间:2019-02-08 20:58:13

标签: php jquery ajax wordpress jeditable

我有一个数据库(日历),授权用户可以使用jeditable更新表单元格。我将日历转换为wordpress插件以在wordpress网站上工作。我研究了一些答案,描述了如何在wordpress ajax中使用jeditable,但是我似乎无法在插件中使用它。 jeditable插件正在我的页面上运行,但是我无法让该插件对wpdb表进行实际更新。

在我的函数php文件中:

add_action( 'wp_ajax_update_record', 'update_record' );
function update_record() {
    global $wpdb;
    $field_id = $_POST['field_id'];
    $pieces = explode('-', $field_id);
    $field=$pieces[0];
    $id=$pieces[1];
    $newInfo = $_POST['newInfo'];
    $table_name = "myCalendar";
    $qry_result = $wpdb->update(
        $table_name,
        array( $field => $newInfo, 'id' => $id ),
        array( '%s', '%d' )
    );
    echo stripslashes($_POST['newInfo']);
    wp_die();
}

add_action( 'admin_enqueue_scripts', 'my_cal_scripts' );
add_action( 'wp_enqueue_scripts', 'my_cal_scripts' ); 

function my_cal_scripts() {

    wp_register_script(
        'ajax-script',
        plugin_dir_url( __FILE__ ) . 'js/my-cal-script.js',
        array( 'jquery-jeditable'),
        NULL,
        TRUE
    );

    $script_settings = array(
        'ajax_url' => admin_url( 'admin-ajax.php' ),
        'table_name' => 'myCalendar',
        'field_id' => $_POST['field_id'],
        'pieces' => explode('-', $field_id),
        'field' => $pieces[0],
        'id' => $pieces[1],
        'newInfo' => $_POST['newInfo'],
        'action'  => 'update_record'
    );

    wp_localize_script(
        'ajax-script',
        'ajax_object',
        $script_settings
     );

    wp_enqueue_script( 'jquery-jeditable' );
    wp_enqueue_script( 'ajax-script' );
}

这是我的jQuery脚本:

( function( $ ) {
    'use strict';
    $( document ).ready( function() {

        var data = {
            'action': ajax_object.update_record,
            'id' : ajax_object.field_id,
            'name' : ajax_object.newInfo
        };

        $('.edit').editable(function(value, settings) {

         $.post(
            ajax_object.ajax_url,
            {
                submitdata : data,
            }, function(response)
               {
           });
              return(value);
         },

         {
            indicator : 'Saving...',
            placeholder : '',
            tooltip   : 'Click to edit, press Enter to save...',
            cancel : 'Cancel',
            submit : 'Save',
            cancelcssclass : 'btn btn-danger',
            submitcssclass : 'btn btn-success',
            maxlength : 200
         });
    } );

} )( jQuery );

看起来好像一切都在工作,除了实际的“ myCalendar”表没有得到更新。

我想念什么?

1 个答案:

答案 0 :(得分:0)

最后!找出问题所在。我用于更新数据库的'update_record'函数有一个错误-应该是

$wpdb->update(
        $table_name,
        array( $field => $newInfo ),
        array( 'id' => $id ),
        array( '%s' )
    );

考虑解决的问题。