我试图在WordPress中使用AJAX验证并提交表单,但是,我得到的响应是0。根据the codex, 这似乎表明admin ajax无法找到我定义的函数。
我做错了什么?
代码(为了演示而简化)
<script type="text/javascript">
jQuery(function()
{
jQuery(document).on(\'click\', \'#test-button\', function()
{
var name = jQuery("#name").val();
var AdminAJAX = <?php echo json_encode(admin_url(\'admin-ajax.php\')); ?>;
var ajaxparams = {
action: \'jp_ajax_request\',
name: name
};
jQuery.post( AdminAJAX, ajaxparams, function( response )
{
alert(response);
});
}
}
</script>
<?php
add_action( \'wp_ajax_jp_ajax_request\', \'jp_ajax_process\');
add_action( \'wp_ajax_nopriv_jp_ajax_request\', \'jp_ajax_process\');
function jp_ajax_process()
{
echo \'ajax response\';
die();
}
?>
<form action="">
<input type="text" id="name">
<button id="test-button">Submit</button>
</form>
SO网友:fuxia
你的add_action()
调用AJAX处理程序为时已晚。
尽早添加这些挂钩,最好的操作可能是wp_loaded
:
add_action( \'wp_loaded\', \'register_ajax_handlers\' );
function register_ajax_handlers()
{
add_action( \'wp_ajax_jp_ajax_request\', \'jp_ajax_process\');
add_action( \'wp_ajax_nopriv_jp_ajax_request\', \'jp_ajax_process\');
}
另请参见:
Debug AJAX.
这段代码应该放在插件或主题的functions.php
.