Intereting Posts
Как добавить страницу параметров в нижней части списка? Создание системы развертывания SaaS с использованием многодольных поддоменов WordPress После перемещения моего сайта из поддомена dev, для root, все мои собственные метаданные исчезли Отсутствие косой черты после перемещения сайта в подпапку WP REST API Создайте собственный маршрут для запроса POST Постоянная ссылка архивного тега wordpress Как мы можем редактировать варианты на странице корзины? Добавить класс в before_widget из пользовательского виджета Ошибка HTTP при загрузке, вызванная магией / кешем Многопозиционный многодоменный Фильтрация пользовательских типов сообщений по значению поля Нестандартная публикация типа почтового типа используя несколько meta_key и meta_value в query_posts Плагин Sitemap для WordPress Network Как показать сообщение (выдержка) из определенной категории на странице wp?

Функция Ajax не возвращает никаких результатов

Я пытаюсь создать вызов ajax, когда я нажимаю ссылку, ссылка представляет собой миниатюру сообщения, и результат должен показывать содержимое сообщения.

Когда я использую admin-ajax.php, он работает нормально, но проблема в том, что URL-адрес не становится доступным.

Это мой ajaxcall

$.ajax({ //url: admin_url + '/wp-admin/admin-ajax.php', url: href + '?action=ajax', dataType: 'json', data: { //action: 'ajax', post_id: post_id }, success: function(data) { console.log("Succes"); row.before('<div id="case" class="twelve columns omega alpha"></div>'); $("#case").slideUp(1); $("#case").html(data).slideDown(speed); $("#header, #featured, .row").animate({'opacity': halfOpacity}, speed); return false; }, error: function() { console.log("Error"); window.location = href; } }); 

И это php в функции functions.php

  function ajax() { global $wpdb; global $post; $id = $_GET['post_id']; $querystr = " SELECT $wpdb->posts.* FROM $wpdb->posts WHERE $wpdb->posts.ID = $id "; $post = $wpdb->get_results($querystr); $response = $post[0]->post_content; $response = json_encode($response); header( "Content-Type: application/json" ); echo $response; exit; } 

Solutions Collecting From Web of "Функция Ajax не возвращает никаких результатов"

Что касается части jQuery:

Все выглядит нормально, за исключением того факта, что у нас нет способа узнать, на какой URL вы в конечном счете указываете. Вы можете увидеть URL-адрес, отправляемые заголовки и ответ сервера, используя инструменты разработчика Firebug или WebKit в Chrome или Safari и соответствующим образом отредактируйте код.

Поскольку я использую AJAX много, мне легче просто поставить это прямо перед закрывающим тегом на моем header.php :

 <?php if(!is_admin()) : ?> <script type="text/javascript"> //<![CDATA[ ajaxurl = '<?php echo(admin_url('admin-ajax.php')); ?>'; //]]> </script> <?php endif; ?> 

Таким образом, у меня есть глобальная переменная Javascript ajaxurl которая всегда будет указывать на правильный URL-адрес AJAX.

Моя ставка заключается в том, что проблема заключается в части PHP. Вам не хватает строк, которые фактически регистрируют вашу функцию PHP в качестве действия WordPress AJAX. Без них WordPress не может догадаться, что ваша функция ajax () на самом деле является функцией AJAX.

Поместите это на свои functions.php :

 add_action('wp_ajax_nopriv_my_custom_callback', 'my_custom_callback'); add_action('wp_ajax_my_custom_callback', 'my_custom_callback'); 

Логика здесь заключается в том, что WordPress проверяет параметр action когда внутри admin-ajax.php , и запускает действие wp_ajax_{action} , которое, в свою очередь, связано с обратным my_custom_callback . Первая строка (одна с битом nopriv ) является необязательной, и вы должны использовать ее только в том случае, если вы хотите обеспечить функциональность AJAX для пользователей без регистрации.

В вашем конкретном случае (хотя я бы настоятельно рекомендовал нечто более уникальное и описательное, чем ajax в качестве имени функции), он будет выглядеть следующим образом:

 add_action('wp_ajax_nopriv_ajax', 'ajax'); add_action('wp_ajax_ajax', 'ajax'); 

Дай мне знать, как все идет, хорошо?