我的ajax调用目前有一个反复出现的问题。 我总是有回复的html页面。
我发给你一个不起作用的典型例子。 它基本上是我开发的测验插件,并在每个阶段发送AJAX调用。此调用将填充数据库表。
var data = {
action: 'insert_stat_question',
security : ajax_var.nonce,
id_formation: $(document).find('#id_formation').val(),
id_module: $(document).find('#id_module').val(),
id_question: button.attr('data-id-question'),
num_question: button.attr('data-num-question'),
id_user: $(document).find('#id_user').val(),
statut: statut
};
jQuery.ajax({
type:'POST',
url: ajax_var.url,
data:data,
success: function(data){
// Do your stuff here once ajax response is returned
//console.log(result);
console.log( data );
},
error: function(errorThrown) {
console.log(errorThrown);
},
});
function theme_name_scripts() {
wp_enqueue_script( 'script-name', plugin_dir_url( __FILE__ ) . 'js/update_stat.js', array('jquery'), '1.0.0', true );
wp_localize_script( 'script-name', 'ajax_var', array(
// URL to wp-admin/admin-ajax.php to process the request
'url' => admin_url( 'admin-ajax.php' ),
// generate a nonce with a unique ID "myajax-post-comment-nonce"
// so that you can check it later when an AJAX request is sent
'nonce' => wp_create_nonce( 'secure_callback' )
));
}
add_action( 'wp_enqueue_scripts', 'theme_name_scripts' );
function insert_stat_question(){
check_ajax_referer( 'secure_callback', 'security' );
global $wpdb;
$wpdb->insert(
$wpdb->prefix . 'quizzcreator_stats_question',
array(
'id_formation' => $_POST['id_formation'],
'id_module' => $_POST['id_module'],
'id_question' => $_POST['id_question'],
'num_question' => $_POST['num_question'],
'meta_statut' => $_POST['statut'],
'id_user' => $_POST['id_user'],
'date_entry' => date('Y-m-d H:i:s')
),
array(
'%d',
'%d',
'%d',
'%d',
'%s',
'%d',
'%s'
)
);
$response = [
'working' => true
];
wp_send_json_success($response);
}
add_action( 'wp_ajax_insert_stat_question', 'insert_stat_question' );
add_action( 'wp_ajax_nopriv_insert_stat_question', 'insert_stat_question' );
我尝试了一切,但没有任何效果。
标题和响应ajax调用的屏幕截图:
感谢您的帮助!
答案 0 :(得分:0)
参数应该是您要作为响应发回的数据数组。
e.g。
$response = [
'working' => true,
'data1' => 'My data 1',
'data2' => 'My data 2'
];
wp_send_json_success( $response );
在你的情况下,你可以做类似的事情,
$action = $wpdb->insert(
$wpdb->prefix . 'quizzcreator_stats_question',
array(
'id_formation' => $_POST['id_formation'],
'id_module' => $_POST['id_module'],
'id_question' => $_POST['id_question'],
'num_question' => $_POST['num_question'],
'meta_statut' => $_POST['statut'],
'id_user' => $_POST['id_user'],
'date_entry' => date('Y-m-d H:i:s')
),
array(
'%d',
'%d',
'%d',
'%d',
'%s',
'%d',
'%s'
)
);
wp_send_json_success( [ 'action' => $action ] );
同时将您的ajax请求更改为此类
$.ajax({
type: 'POST',
url: ajax_var.url,
data: data,
success: function(data) {
console.log( data );
},
error: function(errorThrown) {
console.log(errorThrown);
},
});