2013-07-18 3 views
-1

Я пытаюсь реализовать простую поисковую систему, используя php. Должен ли я постоянно работать на моем сервере .php, а пост - JSON? Или я мог бы как-то отправить что-то на сервер и запустить сценарий только тогда, когда что-то опубликовано? В любом случае я не знаю, как это сделать. Я также кое-что читал о работе CRON. Это применимо здесь?Отправка данных с Javascript/HTML на php для проведения поиска

EDIT: Пользователи видят окно поиска. Типы запросов в поле поиска. Нажмите кнопку. Запрос JSON, отправленный с использованием AJAX на сервер. Сервер использует запрос JSON, отправленный для поиска индексов определенных документов, а не для поиска на веб-сайте. Сервер возвращает результаты в формате JSON. Эти результаты затем интерпретируются и отображаются пользователю.

У меня уже есть поисковая установка в php. Я довольно новичок в php.

EDIT2: У меня уже есть настройка поиска с использованием Elastic Search. Я просто хотел знать, что лучше всего отправлять информацию с сайта Javascript/HTML на pHp на сервере. Прошу прощения за то, что я недостаточно ясен.

+4

Что вы пытаетесь найти внутри? Что вы пробовали? – user20232359723568423357842364

+1

FYI PHP не является отличным решением этой проблемы – Prisoner

+0

Все, что мне нужно сделать, это отправить сервер несколько слов в формате JSON, и сервер интерпретирует это и проводит поиск и отправляет результаты в ответ. – John

ответ

1

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

AJAX здесь очень удобен, особенно если вы хотите добавить такие функции, как автозаполнение. Однако, если вы ожидаете перезагрузки страницы, повторного рендеринга всего содержимого страницы с результатами поиска или перенаправления на другую страницу с этими результатами, AJAX не требуется, потому что вам нужно будет выполнить 2 HTTP-запроса, а не просто один.

На мой взгляд, все, что вам нужно сделать, это иметь форму с одним входом с полем поиска по запросу GET.

Так, например:

<form action="/search_results.php" method="get"> 
<input type="text" name="query" /> 
<button type="submit">Search</button> 
</form> 

Что бы сделать редирект на страницу результатов поиска с URL, как что-то вроде этого: /search_results.php?query=some+simple+search

Тогда , в вашем PHP-коде вы можете получить этот параметр запроса с помощью $ _GET ['query'], который вы можете напрямую передать в поисковую систему (Elastic Search) для анализа.

Я никогда не пытался Elastic Search, но если вы должны передать данные в формате JSON, вы можете просто закодировать запрос с использованием:

$search = json_encode(array('query' => $_GET['query'])); 

Трудно быть точным, потому что вы не дали ожидаемого формата для поиска, но я думаю, что это должно вас подвести.

Не стесняйтесь, прокомментируйте ниже, если у вас есть какие-либо вопросы :)

+0

Отлично. Но как мне передать данные в JSON? – John

+0

Но почему возвращенные данные должны быть в JSON? Вы действительно хотите отображать результат на стороне клиента, а не на стороне сервера, где вы получаете ответ JSON от поисковой системы? – Ignas

+0

Возможно, вы правы. Когда я представляю, как бы я не смог обновить всю страницу? Я просто хочу, чтобы какой-то контент на странице был изменен. Похоже на Google. – John

0

HTML:

<form method="get" action="search.php> 
<input type="text" name="search" /> 
<input type="submit" name="submit" value="Search" /> 
</form> 

search.php:

<?php 

$whatTheyWantToSearch = $_GET['search']; 

// $whatTheyWantToSearch now holds the value that was submitted in the form 
+1

Это довольно частичный ответ, учитывая название. –

0
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
<form id="myForm"> 
    <input id="request" type="text" size="20"><br/><br/> 
    <input type="submit" value="search"> 
</form> 

<div id="search_result"></div> 

<script> 
    $(document).ready(function(){ 

     $('#myForm').submit(function(){ 
      $.ajax({ 
       type: "POST", 
       url: "search.php", 
       data: "search_request="+$("#request").val(), 
       success: function(html){ 
        $("#search_result").html(html); 
       } 
      }); 
      return false; 
     }); 

    }); 
</script> 
Смежные вопросы