0

我正在尝试在我正在试验的 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,所以任何关于我哪里出错的指针都将不胜感激

4

1 回答 1

0

大概跟以下有关系:

<script type="text/javascript">
  jQuery('#new_wp_pop_date_modifiers').submit(addtablerow);
</script>

提交参数中的 addtablerow 是什么?

于 2013-09-16T02:23:19.710 回答