我正在尝试在我正在试验的 Wordpress 插件中 Ajax 管理屏幕(admin.php),该插件目前只读取表的内容,并且应该允许将一行输入到表中。目前提交新行时出现以下错误。我将 ajax 脚本放在文件中的哪个位置似乎并不重要。
Uncaught ReferenceError: addtablerow is not defined
因此,在我的 class-plugin.php 中,我在 Settings 菜单 (views/admin.php) 下创建了一个新页面,并且我有一个函数可以提取表格的内容并显示它。然后我在表格底部创建一个新的空白行输入字段,并添加一个 div 来放置 ajax 反馈:
<form action="" method="post" id="new_wp_pop_date_modifiers">
<input type="hidden" name="action" value="pop_addtablerow_php"/>
<input type="hidden" name="table" value="wp_pop_date_modifiers"/>
<tr class="manage-column">
<td><input type="text" name="name" placeholder="name"></td>
<td><input type="text" name="description" placeholder="description"></td>
<td><input type="text" name="sort_order" placeholder="sort_order"></td>
<td><input type="Submit"></td>
</tr>
</form>
<div id="feedback_wp_pop_date_modifiers">Feedback:</div>
<script type="text/javascript">
jQuery('#new_wp_pop_date_modifiers').submit(addtablerow);
</script>
php处理程序是文件class-plugin.php,函数pop_addtablerow_php:
function pop_addtablerow_php(){
global $wpdb;
$data =array();
foreach($_POST as $key=>$value) {
if (($key != 'table') && ($key !='action')) {
$data[$key] .= $value;
}
}
if($wpdb->insert($_POST['table'],$data)===FALSE){
echo "Error";
} else {
echo "Value '".$name. "' successfully added to '".$table."', row ID is ".$wpdb->insert_id;
}
die();
}
add_action('wp_ajax_pop_addtablerow_php', 'pop_addtablerow_php');
add_action('wp_ajax_nopriv_pop_addtablerow_php', 'pop_addtablerow_php');
然后我有我的 ajax 东西,无论我把它放在哪里,都会给我上面的错误:
<script type="javascript/text">
function addtablerow(){
var rowdata = jQuery(this).serialize();
jQuery.ajax({
type:"POST",
url: "/wp-admin/admin-ajax.php",
data: rowdata,
success:function(data){
jQuery("#feedback_wp_pop_date_modifiers_").html(data);
}
});
return false;
}
</script>
即使我只是将这个内联放在 admin.php - 我为插件创建的管理屏幕 - 仍然给我未捕获的 ReferenceError。我不确定我是不是在错误的地方弄错了东西,或者某个地方是否有更大的错误
这是我第一次尝试使用 Ajax,所以任何关于我哪里出错的指针都将不胜感激