首页 > 解决方案 > 访问 Ajax Enqeued 文件以传递给 URL 以进行 Ajax 调用的问题

问题描述

我正在尝试访问 WP 主题目录中的自定义 php 文件以传递给 jQuery Ajax 调用。我添加了以下代码function.php来注册脚本和 PHP 文件

function add_ajax() {
 wp_enqueue_script( 'addproducts', get_template_directory_uri() .'/js/addproducts.js', array('jquery'),'',true );
 wp_localize_script('addproducts', 'ajax_custom', array('ajaxurl' => admin_url('session.php')));
}
add_action( 'wp_enqueue_scripts', 'add_ajax' );

现在在我的 JavaScript 文件中,我试图传递 urlurl: ajaxurl

var request = $.ajax({
type: "POST",
url: ajaxurl,

但我得到了ajaxurl is not defined错误

addproducts.js?ver=4.9.6:6 Uncaught ReferenceError: ajaxurl 未在 HTMLAnchorElement 中定义。(addproducts.js?ver=4.9.6:6) 在 HTMLAnchorElement.dispatch (jquery.min.js?ver=4.9.6:3) 在 HTMLAnchorElement.r.handle (jquery.min.js?ver=4.9.6 :3)

你能告诉我我错过了什么吗?

标签: wordpresswordpress-theming

解决方案


在您的functions.php中添加此代码

var request = $.ajax({
type: "POST",
url: ajax_custom.ajaxurl,

您需要调用 ajax_custom 因为它是您的 ajax url 的对象

还有另一种选择是可能的

add_action('wp_head', 'myplugin_ajaxurl');

function myplugin_ajaxurl() {

   echo '<script type="text/javascript">
           var ajaxurl = "' . admin_url('admin-ajax.php') . '";
         </script>';
}
add_action('init','myplugin_ajaxurl');

推荐阅读