AJAX: отправка и получение значения с помощью jquery post () и PHP, WordPress - PullRequest
0 голосов
/ 19 августа 2010

Я пытаюсь сделать следующее на странице WordPress:

  1. Пользователь нажимает кнопку "Сортировать сообщения"
  2. Значение с кнопки отправляется на страницу sortFilter.php
  3. Текущая страница обновляется и использует значение, опубликованное в sortFilter.php, для создания нового цикла.

На начальной странице есть тег

, в который я хочу загрузить данные:

<p id="sortFilter"></p>

Вот код, который я использую, и он, похоже, не работает (ничего не загружается в #sortFilter p)

$(document).ready(function() {

    setInterval(function(){     
        $("#sortFilter").load("http://<?php echo $_SERVER[HTTP_HOST]; ?>/sort-filter/");
    },1000);

    //Filter Categories
    $.ajaxSetup({cache:true});
    $('#byAuthorCtrl ul li').click( function() {
        $.post("http://<?php echo $_SERVER[HTTP_HOST]; ?>/sort-filter/", {id: "testValue"}
        );
    });
});

затем на sortFilter.php:

<?php

/*
Template Name: sortFilter
*/

$id = $_POST['id'];
echo $id;
?>

Сейчас я просто использую тестовое значение, чтобы попытаться опубликовать страницу.

Ответы [ 2 ]

1 голос
/ 19 августа 2010

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

Итак, у меня в файле functions.php есть следующее:

add_action('wp_ajax_my_unique_action','doMyCustomAjax');

function doMyCustomAjax(){
  $id = ( isset( $_POST['id'] ) ) ? $_POST['id'] : '';
  if( empty( $id ) )
    return;
  echo $id;
}

следующий скрипт в footer.php, который будет выполнен в моем архиве категорий:

<script type="text/javascript">
    $(document).ready(function() {
        //Filter Categories
        $.ajaxSetup({cache:true});
        $('#byAuthorCtrl ul li').click( function() {
            jQuery.ajax({
              type:'POST',
              data:{id:'my_unique_action'},
              url: "http://www.theknotcollective.com/wp-admin/admin-ajax.php",
              success: function(value) {
                jQuery(this).html(value);
              }
            });
        });
    });

</script>

и следующее в верхней части моего category.php:

<p id="sortFilter"><?php doMyCustomAjax(); ?></p>

Опять же, моя цель - опубликовать эту переменную "id" после нажатия на ссылку, а затем извлечь ее после перезагрузки страницы, чтобы завершить другой цикл обновления страницы.

Я новичок в ajax и в этом типе функций PHP, поэтому я не совсем понимаю, что здесь происходит, и, очевидно, я что-то упускаю / делаю что-то не так. Если бы вы могли уточнить немного, я бы очень признателен!

Thx!

1 голос
/ 19 августа 2010

WordPress имеет встроенные возможности AJAX. Отправьте ваш ajax-запрос в /wp-admin/admin-ajax.php, используя POST с аргументом 'action':

jQuery(document).ready(function(){
        jQuery.ajax({
          type:'POST',
          data:{
            action:'my_unique_action',
            id:'testValue'
          },
          url: "http://mysite/wp-admin/admin-ajax.php",
          success: function(value) {
            jQuery(this).html(value);
          }
        });
});

Затем подключите его к плагину следующим образом, если вы хотите, чтобы он работал только для зарегистрированных пользователей:

add_action('wp_ajax_my_unique_action','doMyCustomAjax');

или подключите его так, чтобы он работал только для незарегистрированных пользователей:

add_action('wp_ajax_nopriv_my_unique_action','doMyCustomAjax');

Используйте оба, если хотите, чтобы это работало на всех.

Вот функция doAjax, например:

function doMyCustomAjax(){
  $id = ( isset( $_POST['id'] ) ) ? $_POST['id'] : '';
  if( empty( $id ) )
    return;
  echo $id;
}

Поместите это в functions.php тоже. Это вернет идентификатор, который вы отправили в AJAX.

admin-ajax.php уже использует некоторые имена действий, поэтому убедитесь, что вы просматриваете файл и не используете те же имена действий, иначе вы случайно попытаетесь сделать такие вещи, как удаление комментариев и т. Д.

EDIT

Поместите строки add_action в файл functions.php. Файл admin-ajax.php запустит некоторые функции, затем запустит хук, который делает ваше значение 'action', затем убьет скрипт. Я изменил код выше, чтобы отразить эту информацию.

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