带有wp_localize_script的Wordpress前端Ajax错误:未定义ajaxurl

时间:2015-04-18 23:57:16

标签: php jquery ajax wordpress frontend

我正在尝试通过wp主题上的ajax在地图上创建标记。 经过一番努力,我发现我不能使用任何php文件通过ajax获取数据,我必须使用admin-ajax.php文件。

根据许多例子,这是我的代码

在functions.php中

add_action( 'wp_enqueue_scripts', 'add_frontend_ajax_javascript_file' );
function add_frontend_ajax_javascript_file()
{
   wp_localize_script( 'frontend_ajax', 'frontendajax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' )));
    wp_enqueue_script( 'ajax_custom_script',  get_stylesheet_directory_uri() . '/includes/ajax-javascript.js', array('jquery') );

}

add_action( 'wp_ajax_get_post_information', 'get_post_information' );
add_action( 'wp_ajax_nopriv_get_post_information', 'get_post_information' );


function get_post_information() 
{ 

$get_this= $_GET['this'];
$get_that= $_GET['that'];

...my select...

echo json formatted data
}

js文件已加载并正常工作,它在ajax调用之前执行其他操作,在此行中出现错误:

$.post({ 
        url:frontendajax.ajaxurl,
        {
            action: 'get_post_information',
            data: data
        },
        success: function(response) {

但我总是有同样的错误:

参考错误:未定义frontendajax.ajaxurl

我的错误在哪里?

PS:我使用get_stylesheet_directory_uri(),因为我是一个儿童主题。

2 个答案:

答案 0 :(得分:5)

来自wp_localize_script docs

  

重要! wp_localize_script()必须在之后调用,它附加的脚本已经使用wp_register_script()或wp_enqueue_script()注册。

句柄必须相同:

wp_enqueue_script( 'ajax_custom_script',  get_stylesheet_directory_uri() . '/includes/ajax-javascript.js', array('jquery') );
wp_localize_script( 'ajax_custom_script', 'frontendajax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' )));

答案 1 :(得分:0)

我正在尝试通过wp主题上的ajax在地图上创建标记。经过一番努力,我发现我不能使用任何php文件通过ajax获取数据,我必须使用admin-ajax.php文件。

 admin_url('admin-ajax.php')     )); }); ?>