我正在使用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以外,什么都没有显示。
答案 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
最后,我想提一下,您可以访问URL http://testsite.ca/wp-admin/admin-ajax.php?action=publication,但我建议改为使用POST方法和随机数验证。
如果看到“ 0”,则表示Wordpress无法完成操作。确保已加载定义功能的文件。您也可以尝试使用另一个钩子手动调用该函数。