2015-04-18 5 views
0

Я пытаюсь создать маркеры на карте через ajax на тему wp. После некоторой борьбы я узнал, что я не могу использовать какой-либо php-файл для получения данных через ajax, я должен использовать файл admin-ajax.php.Wordpress Frontend Ajax с wp_localize_script Ошибка: ajaxurl не определен

Соответственно для многих примеров, это мой код

в 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 загружается и работает, он делает другие вещи перед АЯКС вызова, где он останавливается на ошибка в этой строке:

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

Но я всегда ту же ошибку:

Ссылка Ошибка: frontendajax.ajaxurl не определен

где моя ошибка?

PS: Я использую get_stylesheet_directory_uri(), потому что я в дочерней теме.

ответ

3

От wp_localize_script docs:

IMPORTANT! wp_localize_script() MUST be called after the script it's being attached to has been registered using wp_register_script() or 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'))); 
+0

спасибо, я не понимал, что мне нужно использовать ту же ручку! Чтобы заставить его работать, мне также пришлось передать имя функции действия вместе с данными (я обновил свой вопрос) – bluantinoo

0

Я пытаюсь создать маркеры на карте при помощи AJAX на тему в.ч.. После некоторой борьбы я узнал, что я не могу использовать какой-либо php-файл для получения данных через ajax, я должен использовать файл admin-ajax.php.

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

Я действительно предлагаю вам внимательно прочитать WP Ajax docs https://codex.wordpress.org/AJAX_in_Plugins Я знаю, что это немного сбив с первого взгляда, здесь вы можете найти пример реального мира https://www.sitepoint.com/how-to-use-ajax-in-wordpress-a-real-world-example/ – bluantinoo

Смежные вопросы