Intereting Posts
Исключить первые 5 должностей определенных категорий в основном цикле wp_nav_menu: Есть ли способ изменить вывод <a>, который получил подменю? Пропустить количество изображений в качестве параметра в галерею NextGen Короткие коды не разрешены в ответе вызова AJAX Предотвратите удаление любой роли пользователя, кроме подписчика. Могу ли я просмотреть собственный исходный код wordpress php на моем размещенном веб-сервере? Настройка пользователей в области администратора plugin_action_links _ {$ plugin_file} не подключен к основному файлу плагина Как я могу получить следующие 10 сообщений после post_id == x? Загружаются два сообщения вместо одного? Шаблон WordPress 3.3.1 не отображается в области администратора можно ли получить полную запись в WordPress в RSS-ленте? Использование API для создания короткой ссылки Как включить плагин JQuery UI в wordpress и правильно вставить его в виде плагина? Любые советы по установке после установки WordPress 3.0.1?

Асинхронный запрос в wordpress

У меня есть небольшая проблема, когда вы делаете запрос через ajax в плагине wordpress.

Вот серверная сторона:

add_action('admin_enqueue_scripts', 'my_enque_post'); function my_enque_post() { wp_register_script('PostList', RADIOWEB__PLUGIN_URL . "/js/postlist.js", array( 'jquery' )); $title_nonce = wp_create_nonce('title_example'); wp_localize_script('PostList', 'modallist', array( 'ajaxurl' => admin_url('admin-ajax.php') , 'nonce' => $title_nonce )); wp_enqueue_script('PostList'); } add_action('wp_ajax_nopriv_get-list-post', 'get_list_post'); add_action('wp_ajax_ajax_obter-list-post', 'get_list_post'); function get_list_post() { $teste = $_POST['teste']; echo $teste.'34' ; wp_die(); } 

Как видим, этот скрипт указывает на следующее:

 jQuery(document).ready(function($) { function queryPostsTable() { jQuery.ajax({ type: "POST", url: modallist.ajax_url, _ajax_nonce: modallist.nonce, action: 'get_list_post', teste: 'teste12', success: function(response) { console.log(response); } }); } $("#programa-search").change(function() { queryPostsTable(); }); }); 

Когда я запускаю скрипт, переменная response возвращает мне весь html страницы adm плагина.

введите описание изображения здесь

но это не то, что я ожидаю

Моя цель – выполнить функцию:

 get_list_post (); 

Которая фиксирует пост-тестовую переменную и перекликается с ней.

Моя цель – выполнять операции внутри этой функции: get_list_post ();

и вернуть то, что отражено. Мое ожидание выполнения этого кода – вернуться в console.log: teste1234 Может кто-нибудь, пожалуйста, дать мне подсказку о том, как достичь этого результата?

Solutions Collecting From Web of "Асинхронный запрос в wordpress"

Ваш URL-адрес AJAX отличается от вашего PHP и вашего JS. В вашем JS вы ссылаетесь на ajax_url :

 url: modallist.ajax_url, 

Но переменная, определенная в PHP, является ajaxurl :

 'ajaxurl' => admin_url('admin-ajax.php') , 

Вот почему вы получаете полную административную страницу в качестве ответа. Ваш запрос отправляется на текущую страницу, потому что нет реального URL-адреса.

Другая проблема заключается в том, что действие для ваших крючков неверно. Ваши крючки:

 add_action('wp_ajax_nopriv_get-list-post', 'get_list_post'); add_action('wp_ajax_ajax_obter-list-post', 'get_list_post'); 

Во-первых, они разные. Они должны быть одинаковыми, но у них нет no_priv . Вторая проблема заключается в том, что они не соответствуют имени действия в JS. В JS вы установили действие:

 action: 'get_list_post', 

Таким образом, ваши крючки должны быть:

 add_action('wp_ajax_nopriv_get_list_post', 'get_list_post'); add_action('wp_ajax_get_list_post', 'get_list_post');