我在wordpress中创建了一个自定义表,用于管理每个用户的词汇表列表。此列表在浏览器中显示为表格。我添加了一个按钮,以便用户可以从列表中删除词汇。为此,我使用jquery脚本。我检索用户id和所选词汇表的id,通过ajax将其传递给我的函数。此函数必须删除存储在数据库中的数据。
在我看来,我的变量被很好地传递到函数中,但它不起作用。谁能解释一下我的错误是什么吗?以及如何检查变量是否传递良好。这里是我在“词汇表.js”中的代码
jQuery(\'#button\').click( function () {
var vocabulary = jQuery(\'.selected\').children("input").attr("id");
var user = jQuery(\'#id_user\').attr("name");
jQuery.ajax({
url: removeVoca.ajax_url,
type:\'post\',
data : {
action : \'renove_vocabulary\',
id_vocabulary : vocabulary,
id_user : user
},
success : function(reponse){
//delete the row
table.row(\'.selected\').remove().draw( false );
},
error: function(xhr){
//error handling
console.log("suppression echoué")
}});
} );
} );
这里是我对ajax词汇表的看法。php
add_action( \'wp_ajax_renove_vocabulary\', \'renove_vocabulary\' );
function renove_vocabulary() {
$id_user = $_POST[\'user_id\'];
$id_vacabulary = $_POST[\'vocabulary_id\'];
global $wpdb;
$reponse = $wpdb-> delete (\'wp_user_vocabulary\', array (\'vocabulary_id\' => $id_vacabulary , \'user_id\' => $id_user ), array(\'%d\', \'%d\'));
wp_die();
}
我与调试器进行了核对。变量似乎已发送
最合适的回答,由SO网友:Johansson 整理而成
假设您的脚本本地化和其他内容设置正确,那么后端脚本中就存在问题。您的数据格式如下:
data : {
action : \'renove_vocabulary\',
id_vocabulary : vocabulary,
id_user : user
}
但您正在尝试获取以下数据:
$id_user = $_POST[\'user_id\'];
$id_vacabulary = $_POST[\'vocabulary_id\'];
应更改这2个以匹配上述内容。因此,将其更改为:
$id_user = $_POST[\'id_user\'];
$id_vacabulary = $_POST[\'id_vocabulary\'];
此外,不要忘记使用nonce,清理输入并进行一些安全检查。我建议完全使用REST-API。