Как реструктурировать форму поиска AJAX - PullRequest
2 голосов
/ 09 сентября 2010

У меня есть эта страница (A), в которой есть поле ввода, и после того, как вы отправите ее, она выполняет AJAX-вызов и отображает результаты.Теперь мне нужно поле поиска на другой странице (B), которое после его отправки перенаправляет вас на предыдущую страницу (A), и результаты отображаются так, как если бы вы делали это на первой странице (A).

Как лучше всего справиться с этим?

Ответы [ 6 ]

1 голос
/ 08 октября 2010

Я не уверен, почему вам нужно иметь две отдельные страницы с этим поиском.Проще всего было бы просто перенаправить пользователя со страницы B на страницу A с уже заполненным поиском. Другими словами, страница B действительно ничего не делает:

<?php
   /**
    * Page B
    */
   if(isset($_REQUEST['b_search'])) {
      header("Location: a_search.php?a_search=$_REQUEST[b_search]");
   }
   echo //page content
?>

<?php
   /**
    * Page A
    */
   $search = isset($_REQUEST['a_search']) ? $_REQUEST['a_search'] : null;
   //handle request for non-JS users, I hope
   echo //page content with search filled in
?>

/**
 * JS
 */
document.ready = function () {
   if (document.getElementById('search_field').value != null) {
      //make ajax call
   }
}
1 голос
/ 09 сентября 2010

Вы могли бы заставить pageA.php принять параметр запроса, содержащий ключевые слова поиска, и если этому параметру присвоено значение, показать результаты на основе этого значения. Результаты будут просто включены, чтобы их можно было повторно использовать как для запроса AJAX, так и для обычного запроса.

0 голосов
/ 15 октября 2010

Я делаю это, используя ajax, jquery и json ...

на странице (A) вы делаете вызов ...

</p> <pre> $('input[name="find"]').live('click',function(){ if($(this).val()){ $.getJSON('find.php?users=' + $(this).val(), function(data) { var rows= ""; $.each(data.users, function(i,user){ rows+= i % 2 ? '<tr class="flip">' : '<tr class="flop">'; ... rows+= '<td>' + user.id + '</td>'; rows+= '<td>' + user.name + '</td>'; rows+= '<td>' + user.score + '</td>'; rows+= '</tr>'; }); $('#list tbody').html(rows); } }); }); </pre> <p>

Страница find.php или page (B)



<?php

$user = $_GET['users'] ;

// Search code by field ... 

// Print de result in JSON format ...

?>


возвращает данные в формате json следующим образом ...



{ 
  "action" : "find user",
  "founds" : "2",
  "users"  : [
       {
          "id"    : "33",
          "name"  : "Peter Park",
          "score" : "343"

       },
        {
          "id"    : "1",
          "name"  : "Clark Kent",
          "score" : "1200"
       }
  ]
}



страница (А) вот так ...


<code><table id='list' >
<thead><tr><th> Id </th><th> Имя </th><th> Счет </th></tr></thead>
<tbdoy>
</tbody>
</table>

<input type="text" name="find" value="Find User">

0 голосов
/ 11 сентября 2010

Итак, вы хотите этот Ajax?

Чтобы сделать это с Ajax, я рекомендую вам создать страницу ajax.php, все что он делает - принимает запрос и выкладывает результат.

ajax.php?query=foo

, а затем вывести результат в виде списка или чего-то еще ...

Затем используйте JavaScript, чтобы отобразить его ...

Но это только если вы хотите использовать ajax.

0 голосов
/ 09 сентября 2010

Используя единую логику (если время загрузки ajax не имеет значения), вы можете сделать что-то вроде этого (или любое его изменение):

<?php 
$Term = (isset($_REQUEST['Term'])) ? $_REQUEST['Term'] : 'null'; 
// Optional   default term 
?>
<script>
    function ajax(term){
        if (term == null)
            return false;
    // ajax function for the search box
    // probably fired onclick/onsubmit currently?
    }

    $(document).ready(function(){
        ajax(<?=$Term?>);
    });
</script>

В качестве альтернативы вы можете file_get_contents ("ajax_request.php? param = $ PostValue ") обработчик ajax и вывод без загрузки вызова ajax.

0 голосов
/ 09 сентября 2010

Есть один метод, который выполняет функции поиска.Этот метод может быть вызван двумя способами. 1. Использование Ajax 2. Использование параметров URL

Когда вы вызываете страницу A со страницы B, вы передаете поисковый запрос как параметры URL.страница отображается с результатами.

При поиске по странице A .. вызывается метод ajax и возвращаются данные json / xml.

По сути, ваша страница должна иметьобе логики заложены!

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