Using AJAX with Forms

时间:2013-05-24 作者:William

我试图在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>

1 个回复
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.

结束

相关推荐

Ajax Validation for reCaptcha

背景我有一个registration form 使用AJAX验证jQuery Validation Engine. 表单是使用创建的Theme My Login 和包含reCaptcha 我使用WP-reCAPTCHA.就像其他领域一样,我需要validate reCaptcha using AJAX 也就是说,不刷新整个页面。到目前为止,当验证码没有验证时,我成功地使其工作。但是when it did validate, 即,输入正确,页面刷新,但带有error message 上面说\'That re