我正在尝试在我正在试验的Wordpress插件中使用管理界面(admin.php)进行Ajax管理,该界面当前只是读取表格的内容,并且应该允许在表格中输入一行。目前,我在提交新行时收到以下错误。将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处理程序是文件类-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中 - 我正在为插件创建管理屏幕 - 仍然给了我Uncaught ReferenceError。我不确定我是否只是在错误的地方找到了某些东西,或者某处是否有更大的错误
这是我第一次尝试使用Ajax,所以任何关于我出错的地方都会非常感激
答案 0 :(得分:0)
可能与某些事情有关:
<script type="text/javascript">
jQuery('#new_wp_pop_date_modifiers').submit(addtablerow);
</script>
submit参数中的addtablerow是什么?