WordPress (тема TwentyTen): получение результатов поиска без открытия новой страницы
Я работаю на сайте WordPress.
Я хочу загрузить результаты поиска в текущую открытую страницу, используя методы AJAX. Чтобы сделать это, мне нужно получить вывод PHP-кода, который выполняет поиск, не открывая новую страницу.
Обычно после того, как вы вводите поисковое слово, WordPress открывает новую страницу с URL-адресом, подобным следующему:
mydomain.com/?s=searchword
Вывод кода PHP, который выполняет поиск, показан в div #container этой страницы.
Вопрос: как я могу получить результаты поиска, не открывая новую страницу, чтобы я мог загрузить их с помощью jQuery на страницу, которая открыта в данный момент?
Буду благодарен за совет!
1 ответ
Этот плагин делает это для вас в значительной степени. Возможно, вы захотите взглянуть на исходный код плагина и посмотреть, как вы можете использовать его для себя.
http://wordpress.org/extend/plugins/threewp-ajax-search/screenshots/
Я полагаю, что вы также можете вызвать страницу поиска самостоятельно, проанализировать значение #container, а затем проанализировать список результатов самостоятельно. Если вы хотите помочь с этим, дайте мне знать. В противном случае я думаю, что уже разработанный плагин довольно удобен.
По просьбе здесь есть еще несколько мыслей о том, как я думаю, я мог бы сделать это. Ничто из этого не является тестером, но я в общих чертах обоснован. Вы должны будете настроить вещи в соответствии с вашей установкой. Например, Get vs Post. Тайм-аут. Запрос данных.
Используйте ajax-вызов jQuery для запроса страницы поиска.
$.ajax({ async: true, data: $dataToSend, datatype: 'xml', beforeSend: function() { console.log('rq'); }, error: function(jqXHR, textStatus, errorThrown) { console.log('error'); }, success: function(xml, textstatus, jqXHR) { //Process Response Data }, timeout: 10000, type: 'POST', url: 'http://' + document.location.host + '/search' });
Обработайте ответ и отберите интересующие вас данные. http://www.switchonthecode.com/tutorials/xml-parsing-with-jquery
$ (xml).find ('div [class = "post"]'). each (function () {$ ("# currentPage"). append ($ (this) + "
");});
ТАК отказывается кодировать этот список бит. Извините за это.