Я застрял на этой проблеме некоторое время, и я почти уверен, что это должно быть что-то довольно простое, что, надеюсь, кто-то там сможет пролить свет.
Итак, в настоящее время я использую плагин автозаполнения 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.)