有tons 关于使用Ajax的问题,所以您的问题可以很容易地标记为重复,但我看到了太大的错误,我不能对您说,如果不解释您的错误,问题就重复了。
Wordpress中的Ajax是在admin Ajax中处理的。php文件,您是否正确发送了ajax请求(请参阅url
Ajax调用的参数)。因此,您不需要包括wp负载。php,Wordpress已经加载文件json提要。除非您include
它在函数中。php文件或任何子文件当ajax操作结束时,您总是需要退出(除非您使用wp_send_json 以及已执行退出的相关功能)您在Ajax请求的URL参数中有一个输入错误(请参见;
最后)要获得快速工作示例,请在函数中包含此代码。php文件并修复URL参数中的输入错误:
add_action(\'wp_ajax_nopriv_xn_get_event\', \'xn_get_event\');
add_action(\'wp_ajax_xn_get_event\', \'xn_get_event\');
function xn_get_event(){
echo \'Wow!\';
exit;
}
此外,建议不要在标头中直接包含内联javascript。当javascrpt具有依赖项时,如您的代码,可以使用php或任何其他模板文件。您永远不知道依赖关系是如何处理的。例如,您的javascript依赖于jQuery,但jQuery文件可以移动到页脚,而jQuery代码将停止工作,因为它是在加载jQuery之前打印的。使用适当的Wordpress函数包含javascript并管理依赖项。更好的代码是:
add_action(\'wp_ajax_nopriv_xn_get_event\', \'xn_get_event\');
add_action(\'wp_ajax_xn_get_event\', \'xn_get_event\');
function xn_get_event(){
$data = array( \'message\' => \'Wow!\' );
wp_send_json( $data );
}
add_action(\'wp_enqueue_scripts\', \'cyb_enqueue_scripts\');
function cyb_enqueue_scriptss() {
//Register my script
//Update with the correct path to javscript file
wp_register_script(\'my-script\', get_stylesheet_directory_uri(). \'/js/my-script.js\', array( \'jquery\' ) );
//Enqueue scripts and dependencies
wp_enqueue_script( \'jquery\' );
wp_enqueue_script( \'my-script\' );
//Localize js variables to be used in my-script.js
$scriptData = array(
\'ajaxurl\' => admin_url(\'admin-ajax.php\')
);
wp_localize_script( \'my-script\', \'my_script_data\', $scriptData );
}
我脚本的内容。js文件可能类似于:
jQuery(document).ready(function($){
//AJAX
$.ajax({
type: "GET",
dataType: "json",
url: my_script_data.ajaxurl,
data: {
action: "xn_get_event"
}
})
.done( function( response ) {
alert( response.message );
})
.fail( function( response ){
alert( "omg!" );
});
});
有关更多信息,请阅读上的文档
WP Ajax API 或者关于
using Ajax in Wordpress.
注意:代码未测试。