我有一个数据库(日历),授权用户可以使用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”表没有得到更新。
我想念什么?
答案 0 :(得分:0)
最后!找出问题所在。我用于更新数据库的'update_record'函数有一个错误-应该是
$wpdb->update(
$table_name,
array( $field => $newInfo ),
array( 'id' => $id ),
array( '%s' )
);
考虑解决的问题。