经过多次尝试并搜索网页后,我提出了一些帮助,因为我真的疯了。
我正在我的一个WordPress模板文件中进行最简单的AJAX调用。
问题是返回的数据(response.responseText)是我主页的完整html内容(从!doctype到/ html),很奇怪。
我真的很害怕,因为我不知道出了什么问题,也无法在网上找到相同问题的答案。
这是JS:
(function() {
"use strict";
$('#myselector').on('click', function(e){
e.preventDefault();
$.ajax( {
url: myvar.url,
type: 'post',
// if uncommented, console.log shows parseerror
//dataType: 'json',
data: {
action: myvar.action,
nonce: myvar.nonce,
uid: myvar.uid
},
})
.done( function( response, textStatus, jqXHR ) {
console.log(response)
console.log(textStatus)
console.log(jqXHR)
})
.fail( function( jqXHR, textStatus, errorThrown ) {
console.log(textStatus)
})
.then( function( jqXHR, textStatus, errorThrown ) {
console.log(textStatus)
})
});
})();
这个JavaScript加载了wp_enqueue_scripts:
add_action( 'wp_enqueue_scripts', function () {
wp_enqueue_script( 'fileid', get_theme_file_uri( '/assets/js/myJSfile.js' ), array( 'jquery' ), null, true );
wp_localize_script( 'fileid', 'myvar', array(
'url' => admin_url( 'admin-ajax.php' ),
'action' => 'my_action',
'nonce' => wp_create_nonce( 'my_nonce' ),
) );
} );
function.php中的动作函数:
add_action( 'wp_ajax_my_action_action', 'my_action_action' );
add_action( 'wp_ajax_nopriv_my_action_action', 'my_action_action' );
function my_action() {
if ( ! check_ajax_referer( 'my_nonce', 'nonce' ) )
wp_send_json_error();
$data = array(
'success' => 1,
'data' => 'What s wrong?',
);
wp_send_json_success( $data );
}
答案 0 :(得分:0)
试试这个:
add_action( 'wp_ajax_my_action', 'my_action' );
add_action( 'wp_ajax_nopriv_my_action', 'my_action' );
function my_action(){
if ( ! check_ajax_referer( 'my_nonce', 'nonce' ) )
wp_send_json_error();
$data = array(
'success' => 1,
'data' => 'What s wrong?',
);
wp_send_json_success( $data );
exit;
}
请参阅此click here 希望它有效。