尝试将wp_localize_script用于 ajax 调用,但回调未运行



我正在使用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 之外什么都没有显示。

我偶然来到了这个线程,但我决定回答,即使为时已晚。我希望它能帮助某人^^

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

首先,您应该始终使用钩子。使用wp_enqueue_scripthook 注册脚本并本地化脚本。 这给你 :

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()的错误用法。在此函数的文档中,您可以看到第二个参数定义了 JS var 的名称,第三个参数必须是数组。 使用此代码,您可以使用以下命令访问您的 ajax url:jsData.ajaxUrl

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

如果您看到"0",则表示 Wordpress 无法访问该操作。 确保加载了定义函数的文件。您也可以尝试使用另一个钩子手动调用该函数。

最新更新