我正在尝试在 wordpress 中学习 ajax 以删除表格条目,但对放置感到困惑

Posted

技术标签:

【中文标题】我正在尝试在 wordpress 中学习 ajax 以删除表格条目,但对放置感到困惑【英文标题】:I am trying to learn ajax within wordpress to delete a table entry but am getting confused on placement 【发布时间】:2021-12-16 10:37:23 【问题描述】:

我创建了一个 wordpress 插件来为不同联赛的运动队添加赛程和结果,您可以查看每个联赛的赛程和结果并根据需要删除/编辑它们。

我在末尾添加了一个名为“删除”的按钮,当我单击该按钮时,我希望它从表格中删除条目并使整个条目随着淡入淡出而消失。

我一直在查找有关 ajax 如何与 wordpress 一起使用的网站,但我感到很困惑。

这是我的插件中 fixtures_admin.php 页面上的按钮代码和 javascript

<input type="button" id="<?php echo $elementid; ?>" class="submitDeleteEntry" name="submitDeleteEntry" value="Delete" />

<script type="text/javascript">
    jQuery(document).on('click', '.submitDeleteEntry', function () 
        var id = this.id;
        //alert(id);
        jQuery.ajax(
            type: 'POST',
            url: ajaxurl,
            data: "action": "fws_delete_row", "id": id,
            success: function (data) 
               
            
        );
     );
</script>

$elementid 只是使用数据库中的变量 id 并按预期工作。

如果我取消注释警报(id);我确实收到了带有 id 的警报。

我已将此代码放在注册 ajax 的页面顶部

function fws_delete_row()
    global $wpdb;
    $dbtable = $wpdb->prefix . 'fws_fixtures';
    $id = $_POST['id'];
    $wpdb->delete($table, array('id' => $id));    

add_action( 'wp_ajax_fws_delete_row', 'fws_delete_row' );
add_action( 'wp_ajax_nopriv_fws_delete_row', 'fws_delete_row' );

但是当我点击删除按钮时,什么也没有发生。我已经尝试在互联网上寻找有关如何执行此操作的示例,但似乎找不到执行此操作的方法。

我很高兴自己得出结论,但如果有人可以向我解释我哪里出错了,我真的很想学习。

我知道一旦从数据库中删除,我将需要添加更多代码以在页面上删除要删除的行,但现在我只想让按钮至少删除。

非常感谢您的帮助。

【问题讨论】:

您创建了一个名为$dbtable 的变量,然后在下面尝试使用$table。这就是它不起作用的原因:P 另外,将WP_DEBUG 设置为true 来开发您的插件可能是个好主意,这样您就可以更容易地发现这些错误。有关详细信息,请参阅Debugging in WordPress。 @cabrerahector 实际上没关系,因为 $dbtable 和 $table 是同一页面中的同一个变量。 好吧,如果你这么说的话。如果我是你,我仍然会按照建议启用调试日志。 @cabrerahector 我打开了调试模式,当我按下删除按钮时,我没有收到任何调试错误。我得到的唯一调试错误是一个未定义的索引:submitDeleteEntry,我最初用于删除条目,直到我得到超过 1000 个固定装置它变得耗时不断重新加载页面并且不得不移回我所在的位置。 【参考方案1】:

我已经弄清楚我哪里出错了,我只是在文件底部有 javascript,我没有正确注册它,如本页所示 https://codex.wordpress.org/AJAX_in_Plugins

我需要使用下面的代码将它加载到 admin_footer 中

add_action( 'admin_footer', 'fws_delete_javascript' );
function fws_delete_javascript()  ?>
<script type="text/javascript">
                            jQuery(document).on('click', '.submitDeleteEntry', function () 
                                var id = this.id;
                                //alert(id);
                                jQuery.ajax(
                                    type: 'POST',
                                    url: ajaxurl,
                                    data: "action": "fws_delete_row", "id": id,
                                    success: function (data) 
                   
                                    
                                );
                            );
</script>
<?

【讨论】:

以上是关于我正在尝试在 wordpress 中学习 ajax 以删除表格条目,但对放置感到困惑的主要内容,如果未能解决你的问题,请参考以下文章

K 意味着在 scikit 中学习内核死亡 - 由于长时间计算

Keras - 分类器未从预训练模型的转移值中学习

在纯 Java 中学习 JavaCV [关闭]

[我正在用一本书在python中学习opencv,但出现此错误:只能将整数标量数组转换为标量索引

如何在PHP中学习在线用户数? [关闭]

编码器/解码器模型如何在深度学习中学习?