我正在尝试将wordpress数据库中所有勾选复选框的值插入到我自己创建的表中。这是我的jQuery代码:
$(document).ready(function(){
$('#submit').click(function(){
var insert = [];
$('.get_value').each(function(){
if($(this).is(":checked") ){
insert.push($(this).val() );
}
});
insert = insert.toString();
$.ajax({
url:"insert.php",
method:"POST",
data:{insert:insert},
success:function(data){
$('.result').html(data);
}
});
});
});
和我的插入代码,(在insert.php中):
if ( isset($_POST["insert"]) ){
global $wpdb;
$table_name = $wpdb->prefix . "status";
$wpdb->insert($table_name, array(
'status' => 'approved'
);
}
它没有显示任何错误,但它没有插入任何错误。我不知道这些信息是否有用,但复选框位于管理员后端,作为自定义帖子类型的一部分。
答案 0 :(得分:1)
这不起作用,因为你在ajax调用中调用insert.php
。该url应指向ajaxurl,该ajaxurl使用您的ajax所在的脚本进行本地化。
因此,如果您的脚本位于名为custom.js
的文件中,并且您将其排队,则会将其列入:
wp_enqueue_script( 'my_custom_script', get_template_directory_uri() . '/js/custom.js', array( 'jquery' ),'', true );
然后您将本地化您的ajax网址
wp_localize_script( 'my_custom_script', 'ajax_call', array(
'ajaxurl' => admin_url( 'admin-ajax.php' ),
) );
并在您的脚本中使用它,如
$(document).ready(function(){
$('#submit').click(function(){
var insert = [];
$('.get_value').each(function(){
if($(this).is(":checked") ){
insert.push($(this).val() );
}
});
insert = insert.toString();
$.ajax({
url: ajax_call.ajaxurl,
method:"POST",
data:{
'action': 'my_action_callback',
'insert': insert,
},
success:function(data){
$('.result').html(data);
}
});
});
});
此外,您的insert.php代码应位于wp_ajax
hooks
add_action( 'wp_ajax_my_action_callback', 'my_action_callback' );
add_action( 'wp_ajax_nopriv_my_action_callback', 'my_action_callback' );
function my_action_callback(){
if ( isset($_POST["insert"]) ){
global $wpdb;
$table_name = $wpdb->prefix . "status";
$wpdb->insert($table_name, array(
'status' => 'approved'
);
}
}