AJAX 404 с результатами, используя BuddyPress - PullRequest
0 голосов
/ 04 июня 2009

На моей машине для разработки все работает отлично. На живом сервере (Godaddy) запросы AJAX от BuddyPress возвращают результаты и ошибку 404 в FireBug. Но сценарий видит результаты как неудачные, и индикаторы продолжают вращаться.

Пример: http://jobaru.com/ на главной странице есть Новые | Активный | Популярно среди участников, использующих AJAX, а также буквы на странице групп.

Вещи, которые я пробовал: дважды проверил, был ли файл первым, проверил права на чтение. Сделал свежую установку.

Любые идеи о том, почему он вернет заголовок 404 и правильный ответ?

Ответы [ 8 ]

3 голосов
/ 05 июня 2009

Я не знаю, почему возвращается 404, но попробуйте добавить эту строку кода в /wp-content/plugins/buddypress/bp-core/bp-core-ajax-handler.php перед do_action ()

status_header( 200 );

Я использую сильно модифицированную версию BuddyPress 1.0 RC1 и перехватываю сообщения ajax в bp-custom.php, но установка заголовка состояния в пользовательском файле до того, как я сделал свою собственную логику, работала для меня просто отлично.

2 голосов
/ 22 февраля 2013

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

Моя проблема заключалась в том, что в URL-адресе пользовательских групп в цикле активности "дополнительная ссылка" получала ошибку заголовка ответа 404 на admin-ajax.php. Если я проверяю содержание ответа, все данные об активности были там. Поэтому я не уверен, что является причиной проблемы.

Чтобы решить эту проблему, я добавил функцию, которая будет возвращать заголовок состояния 200 при запуске вызова AJAX. В моем случае мне понадобилось действие «get_older_updates», но я полагаю, что вы можете использовать его для любого другого действия, определенного в /bp-themes/bp-default/_inc/ajax.php:27

add_action( 'wp_ajax_activity_get_older_updates', 'bp_dtheme_activity_template_loader2' );
add_action( 'wp_ajax_nopriv_activity_get_older_updates', 'bp_dtheme_activity_template_loader2' );

function bp_dtheme_activity_template_loader2(){
    if(isset($_REQUEST['action']) && $_REQUEST['action'] == 'activity_get_older_updates')
    {
        status_header( 200 );
    }
}   
1 голос
/ 07 июля 2012

У меня была эта проблема на GoDaddy, и она сводила меня с ума, но я нашел решение. Отправка кода состояния 200 (заголовок («HTTP / 1.1 200 OK»);) не избавила меня от 404. У меня было правило mod_rewrite, которое перенаправляло стандартный URL-адрес в мой index.php, поэтому URL-адрес был следующим:

www.example.com/myroute/ajax_get_current

Был отправлен в мое приложение по сути так:

www.example.com/index.php/myroute/ajax_get_current

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

DOCROOT/myroute.php

Тогда я получу результат в точности как описано - ошибка 404, но правильный ответ. Я подтвердил, что если я изменю файл на «myroute_cron.php», 404 исчезнет (правильные 200), и если я верну его обратно, он выдаст 404.

Я понятия не имею, почему это происходит (особенно потому, что он явно выполнял правильный сценарий для получения правильного ответа), возможно, что-то с MultiViews. Надеюсь, это поможет.

1 голос
/ 04 июня 2009

Судя по вашим комментариям, это похоже на GoDaddy. Пока вы не получите ответ от их поддержки, я бы изменил скрипт AJAX, чтобы игнорировать ошибку 404 для этого конкретного запроса.

0 голосов
/ 10 августа 2010

Я получал сообщение об ошибке 404 во время игры в раскрывающемся меню "Город страны" с использованием AJAX, и проблема была

<select name="lm_country" id="lm_coutry" 
    onChange="getCity('getcities.php?country='+this.value)">

Затем я дал полный URL, как указано ниже; -

<select name="lm_country" id="lm_coutry" 
    onChange="getCity('http://localhost/civic/includes/getcities.php?country='+this.value)">
0 голосов
/ 19 декабря 2009

FWIW, я видел точно такую ​​же проблему с JSON-форматированными ответами как частью плагина WordPress, когда он размещался на GoDaddy.com. Результаты JSON отправляются правильно, но ответ HTTP имеет код состояния 404.

Я совершенно уверен, что это проблема с их заголовком / конфигурацией Apache, и я попытаюсь завладеть их командой технической поддержки (желаю удачи), чтобы попытаться разобраться в этом. 1003 *

Я опубликую здесь, если получу ответ от них.

0 голосов
/ 04 июня 2009

убедитесь, что вы уже добавили обработчик ошибок для ajax fail (error)? попробуйте сначала скрыть индикатор вращения, чтобы увидеть происходящий эффект.

0 голосов
/ 04 июня 2009

Я смотрю на ответ AJAX, и похоже, что вместо чистого HTML, который он возвращает, он имеет это в начале: 0 [[SPLIT]] и ноль в конце. Может ли это быть как-то связано с этим?

...