jQuery Ajax возвращает ошибку 404, но правильный ответ

Я отправляю некоторые данные в сценарий PHP через jQuery AJAX, и все работает правильно, но возвращает ошибку 404. В моей консоли Firebug ответ сценария PHP правильный. Я не понимаю, как сценарий может реагировать, но он все еще выдает ошибку 404. Метод обратного вызова jQuery «error» срабатывает, а метод «success» - нет.

Все операторы, выполняемые сценарием PHP, работают точно, потому что я вижу, что база данных обновляется и т. Д.

Я использую jQuery 1.4.2 на WordPress 3. x, размещенный на Dreamhost.

----------- ПОДРОБНЕЕ -----------

Хорошо, я понял это, когда включил WordPress wp-blog-header.php в скрипте Ajax, я получаю сообщение об ошибке. Кроме того, когда-то эти скрипты работали, и я на 90% уверен, что они перестали работать после обновления WP 3.0. Я вставлю заголовки ответа от Firebug.

Этот ответ заголовка от PHP, который включает wp-blog-header.php и возвращает ошибку 404 в Firebug ...

Date                Tue, 10 Aug 2010 01:44:44 GMT
Server            Apache
X-Powered-By        PHP/5.2.6
X-Pingback        http://www.learnwake.com/xmlrpc.php
Expires          Wed, 11 Jan 1984 05:00:00 GMT
Cache-Control       no-cache, must-revalidate, max-age=0
Pragma            no-cache
Last-Modified       Tue, 10 Aug 2010 01:44:44 GMT
Vary                Accept-Encoding
Content-Encoding    gzip
Content-Length    36
Keep-Alive        timeout=2, max=98
Connection        Keep-Alive
Content-Type        text/html; charset=UTF-8

Этот ответ заголовка от PHP, который не ' t включает wp-blog-header.php и возвращает 200 OK в Firebug ...

Date                Tue, 10 Aug 2010 01:44:58 GMT
Server            Apache
X-Powered-By        PHP/5.2.6
Vary                Accept-Encoding
Content-Encoding    gzip
Content-Length    36
Keep-Alive        timeout=2, max=100
Connection        Keep-Alive
Content-Type        text/html
31
задан Neal 27 March 2012 в 16:27
поделиться

3 ответа

Когда вы включаете wp-blog-header.php , вы завершаете загрузку всей процедуры установки WordPress. Вызывается функция wp () , которая вызывает $ wp-> main () , которая, в свою очередь, вызывает различные функции настройки.

Один из них - $ wp-> query_posts () , который вызывает $ wp_the_query-> query () , который, в свою очередь, вызывает WP_Query функция parse_query () . Я подозреваю , что там генерируется индикация 404 (ваша страница AJAX не является постом WP или чем-то подобным), а затем $ wp- преобразовывает в настоящий заголовок ответа 404. > handle_404 () , функция, вызываемая после query_posts () в main () .

Я не уверен на 100%, что parse_query () является явным виновником, но я бы посоветовал посмотреть, можете ли вы вместо этого просто включить wp-load.php , поскольку я верю, что он выполняет фактическую работу по созданию объектов, к которым вы хотите получить доступ.

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

47
ответ дан 27 November 2019 в 22:18
поделиться

Я однажды добавил файл ajax.php в шаблон WordPress и столкнулся с этой проблемой.

Я решил это, просто добавив вверху ajax.php

header('Response: HTTP/1.1 200 OK');

Вроде хака, но это сработало.

3
ответ дан 27 November 2019 в 22:18
поделиться

В целом не так уж много мест, где WordPress будет возвращать ошибку 404. Я рекомендую для этих мест выполнить поиск дерева исходных текстов и разместить отладочный код, чтобы отследить, почему это происходит.

1
ответ дан 27 November 2019 в 22:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: