尝试使用wp_localize_script进行Ajax调用,但回调未运行

时间:2018-10-24 00:14:23

标签: php jquery ajax wordpress

我正在使用Wordpress,并且试图运行ajax调用以在提交表单后从数据库获取内容。到目前为止,我正在尝试将wp_localize_scripts放在一起,但是它没有回显任何内容。我可以正确调用函数吗?

wp_register_script( 'form-handle', get_stylesheet_directory_uri() . 
'/library/js/formHandle.js', array(), '', true);
        wp_localize_script( 'form-handle', 'ajaxUrl', 
admin_url('admin-ajax.php') );

add_action( 'wp_ajax_publication', 'search_publications');
add_action( 'wp_ajax_nopriv_publication', 'search_publications');

function search_publications(){
            echo 'hello'

            wp_die();
        };

然后,当我转到URL http://testsite.ca/wp-admin/admin-ajax.php?action=publication时,除了0以外,什么都没有显示。

1 个答案:

答案 0 :(得分:0)

我偶然进入了这个线程,但是即使来不及了,我还是决定回答。我希望它能帮助某人^^

您向我们展示的内容存在一些错误。 那是代码的一部分吗?

首先,您应该始终使用钩子。使用wp_enqueue_script钩子注册脚本和本地化脚本。 那给你:

function my_enqueue_script() {
    wp_register_script( 'form-handle', get_stylesheet_directory_uri() . '/library/js/formHandle.js', array(), '', true);
    wp_localize_script( 'form-handle', 'jsData',[
        'ajaxUrl' => admin_url('admin-ajax.php'),
    ]);
}
add_action('wp_enqueue_script', 'my_enqueue_script');

如您所见,我还修复了wp_localize_script()的错误用法。在此函数的文档中,您可以看到2nd参数定义了JS var的名称,并且 3rd参数必须是数组。 使用此代码,您可以使用jsData.ajaxUrl

访问ajax网址

最后,我想提一下,您可以访问URL http://testsite.ca/wp-admin/admin-ajax.php?action=publication,但我建议改为使用POST方法和随机数验证。

如果看到“ 0”,则表示Wordpress无法完成操作。确保已加载定义功能的文件。您也可以尝试使用另一个钩子手动调用该函数。