Ошибка 404 с JQuery Автозаполнение JSON со ссылкой на внешний файл PHP - PullRequest
1 голос
/ 16 мая 2011

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

Итак, в настоящее время я использую плагин автозаполнения jQuery UI для ссылки на внешний PHP, который получает информацию из базы данных (в массиве) и отправляет ее в вывод JSON.

Из моего файла PHP (search.php), когда я делаю это:

echo json_encode($items);

Мой вывод (при просмотре файла search.php) такой:

["Example 1","Example 2","Example 3","Example 4","Example 5"]

Что является действительным JSON в соответствии с jsonlint.com

Проблема в том, что когда я использую скрипт автозаполнения пользовательского интерфейса jQuery для ссылки на внешний файл search.php, Chrome просто выдает мне следующую ошибку:

GET http://www.example.com/search.php?term=my+search+term 404 (Not Found)

Я попытался ввести код JSON прямо в объявление 'Source:' в моем jQuery, и это прекрасно работает, но он не будет читать JSON из внешнего файла PHP.

Может кто-нибудь помочь?

Вот мой код:

HMTL

<p class="my-input">
<label for="input">Enter your input</label>

<textarea id="input" name="input"
class="validate[required]"
placeholder="Enter your input here.">
</textarea>
</p>

JQuery

$(function() {

    $( "#input" ).autocomplete({
        source: "http://www.example.com/search.php",
        minLength: 2
    });
});

PHP

header("Content-type: application/json");

// no term passed - just exit early with no response
    if (empty($_GET['term'])) exit ;
    $q = strtolower($_GET["term"]);
// remove slashes if they were magically added
    if (get_magic_quotes_gpc()) $q = stripslashes($q);

include '../../../my-include.php';
global $globalvariable;

$items = array();

// Get info from WordPress Database and put into array
$items = $wpdb->get_col("SELECT column FROM $wpdb->comments WHERE    comment_approved = '1' ORDER BY column ASC");

// echo out the items array in JSON format to be read by my jQuery Autocomplete plugin
    echo json_encode($items);

Результат

В браузере, когда информация вводится в # input

GET http://www.example.com/search.php?term=Example+1 404 (Not Found)

Обновление: реальный PHP-адрес здесь: http://www.qwota.co.uk/wp/wp-content/themes/qwota/list-comments.php?term=Your

Пожалуйста, помогите!

ОБНОВЛЕНИЕ: ОТВЕТ

Ответ на мою проблему указал Маджид Фуладпур

Проблема была не в моем коде, а в попытке использовать глобальную переменную $ wpdb WordPress, поскольку (насколько я понимаю) она включает собственные заголовки, и все, что находится за пределами обычного макета, приведет к ошибке 404 , даже если файл действительно существует.

В настоящее время я пытаюсь обойти эту проблему, создавая собственные запросы MySQL и не используя глобальные переменные / заголовки WordPress.

PS. Маджид, я вернусь и дам вам «полезную галочку», как только StackOverflow позволит мне! (Я все еще n00b.)

Ответы [ 4 ]

1 голос
/ 27 октября 2011

Я думаю, что проблема заключается в включении. Как указал Маджид ... используйте вместо этого включенное ниже.

include("../../../wp-load.php");

Удачи!

1 голос
/ 16 мая 2011

Вы должны убедиться, что целевой URL существует. Если вы действительно используете http://www.example.com/search.php, то, wk, его просто не существует, поэтому он не работает.

Обновление

Поскольку у вас есть действующий URL-адрес (я его проверил!), Вот несколько шагов, которые вы можете сделать:

  1. Убедитесь, что опечаток нет. Если есть, то исправь.
  2. Убедитесь, что вы можете открыть этот URL из вашего браузера. Если вы не можете, то у вас могут быть проблемы с доступом к сети (брандмауэр, прокси, проблемы с правами доступа к серверу и т. Д.)
  3. Попробуйте перенаправить на другой известный URL, просто чтобы убедиться. Ошибка 404 действительно "не найдена". Это не может быть ничто иное.
1 голос
/ 16 мая 2011

Вы уверены, что путь источника: "http://www.example.com/search.php" правильный?

0 голосов
/ 16 мая 2011

Ваш сервер apache отправляет неправильные заголовки.Вот пара запросов и ответов:

Запрос

GET /wp/wp-content/themes/qwota/list-comments.php?term=this HTTP/1.1
Host: www.qwota.co.uk
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cookie: __utma=142729525.1341149814.1305551961.1305551961.1305551961.1; __utmb=142729525.3.10.1305551961; __utmc=142729525; __utmz=142729525.1305551961.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)

Заголовки ответа

HTTP/1.1 404 Not Found
Date: Mon, 16 May 2011 13:28:31 GMT
Server: Apache
X-Powered-By: PHP/5.2.14
X-Pingback: http://www.qwota.co.uk/wp/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: Mon, 16 May 2011 13:28:31 GMT
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8

Тело ответа

["Bake 'em away... toys.","Content precedes design. Design in the absence of content is not design, it\u2019s decoration.","Hanging on in quiet desperation is the English way.","I'm a reasonable man, get off my case.","Look at me, Damien! It's all for you!","Never get out of the boat... absolutely god damn right.","That gum you like is going to come back in style.","The secret to creativity is knowing how to hide your sources.","Things could be different... but they're not.","Your eyes... they turn me."]

Таким образом, даже если вы получаете ответный ответ от сервера, в заголовках у него есть HTTP/1.1 404 Not Found.Кто-то может исследовать это и предоставить потенциальную причину и решение.

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