Intereting Posts
Неустранимая ошибка в функции wp_get_current_user () Удалите и выполните новую установку WordPress Почему не работает ОДИН из моих ссылок в нижнем колонтитуле? Проверить форму в функции.php, отправить ошибки обратно в шаблон Запланированное событие не срабатывает Получение связанных таксономий Как заменить выбранную функцию загрузки изображений с помощью опции post media image Поиск любых изображений в медиа-библиотеке отображает «нет носителя» как я могу установить пост-автора сообщения, которое я только что создал с помощью php? Как заставить WordPress добавлять новые изображения в начале галереи? Вставить короткий код между '<div>' Как изменить статус сообщения из публикации в черновик с помощью hook в wordpress? Неопределенная ошибка индекса в пользовательском почтовом обмене Изменение адреса сайта (URL) вызывает 404 Как включить шаблон в соответствии со значением метастатистики

Функция 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'); 

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