Попытка использовать wp_localize_script для вызова ajax, но обратный вызов не работает - PullRequest
0 голосов
/ 24 октября 2018

Я использую 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.

1 Ответ

0 голосов
/ 15 апреля 2019

Я зашел в эту ветку случайно, но решил ответить, даже если уже слишком поздно.Надеюсь, это кому-нибудь поможет ^^

В том, что вы нам показали, есть ошибки.Это части кода?

Прежде всего, вы всегда должны использовать хуки.Используйте хук 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().В документации этой функции вы можете видеть, что 2-й параметр определяет имя JS-переменной, а 3-й параметр должен быть массивом .С помощью этого кода вы можете получить доступ к своему URL-адресу ajax с помощью: jsData.ajaxUrl

Наконец, я хотел бы отметить, что вы можете достичь URL http://testsite.ca/wp-admin/admin-ajax.php?action=publication, но я бы предложил использовать метод POST и проверку nonceвместо этого.

Если вы видите «0», это означает, что Wordpress не может выполнить действие.Убедитесь, что файл (ы), где определены функции, загружен.Вы также можете попробовать вызвать функцию вручную с помощью другого хука.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...