【问题标题】:Ajax and php delete error in WordPressWordPress中的Ajax和php删除错误
【发布时间】:2013-10-30 07:09:23
【问题描述】:

这是我第一次尝试使用 Ajax 和 PHP 从 MySQL 中删除一行。我收到错误:

PHP 致命错误:在第 10 行的 /home/insightd/public_html/dev/wp-content/plugins/id-ffui/lib/delete.php 中的非对象上调用成员函数 delete()

一切正常,但该行没有被删除。

HTML 表单的删除部分:

  echo "<div class='ffui-media-item'>";
  echo "<div class='ffui-delete' align='center'><a href='#' id='" . $media_item['ID'] . "' class='delbutton' title='Click To Delete'>X</a></div>";

jQuery/Ajax 部分:

<script type="text/javascript">
  $(function() {
   $(".delbutton").click(function(){
    //Save the link in a variable called element
    var element = $(this);

    //Find the id of the link that was clicked
    var del_id = element.attr('id');

    //Built a url to send
    var info = {"id" : del_id };
      if(confirm("Are you sure you want to delete this Record?")) {
        $.ajax({
          type: "POST",
          url: "<?php echo plugins_url('id-ffui/lib/delete.php') ?>",
          data: info,
          success: function(){   
          }
        });
        $(this).parents(".ffui-media-item").animate({ backgroundColor: "#fbc7c7" }, "fast")
          .animate({ opacity: "hide" }, "slow");
      }
    return false;
  });
});
</script>

还有delete.php文件:

global $wpdb;
global $ffui_db_version;

$ffui_items = $wpdb->prefix . "ffui_items";

if($_POST['id']) {
  $id = $_POST['id'];
    $wpdb->delete( $ffui_items, array( 'ID' => `$id` ) );
}

任何帮助将不胜感激。提前致谢。

【问题讨论】:

    标签: php jquery mysql ajax wordpress


    【解决方案1】:

    如果您显示的代码是整个 delete.php,那么 $wpdb 还没有被实例化。您需要先加载核心 WP 文件:

    require_once( dirname( dirname( dirname( dirname( __FILE__ )))) . '/wp-load.php' );
    

    您的其余代码在此之后。如果是这种情况,您就不需要“全局”命令,因为您不是在函数或对象内部进行操作。

    这是 wp-load.php 的great explanation

    【讨论】:

    • 完美!我发现并使用了它。 $absolute_path = explode('wp-content', $_SERVER['SCRIPT_FILENAME']); $wp_load = $absolute_path[0] 。 'wp-load.php';需要一次($wp_load);
    • 我刚刚编辑了答案以匹配其他插件开发人员所做的事情,如链接的“很好的解释”页面所示。​​
    【解决方案2】:

    不正确的反引号:

    $wpdb->delete( $ffui_items, array( 'ID' => `$id` ) );
                                               ^---^--
    

    PHP 在其代码中不使用反引号。应该只是'ID' =&gt; $id

    至于实际的错误消息,您似乎没有包含 wordpress 库,因此 $wpdb 实际上并不存在。

    【讨论】:

    • 谢谢。有没有办法在我的 php 文件中包含 wordpress 库?
    猜你喜欢
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 2015-05-27
    • 2015-06-30
    • 2012-06-05
    • 2014-05-27
    • 2016-03-09
    相关资源
    最近更新 更多