如何重构AJAX搜索表单

时间:2010-09-08 20:50:44

标签: php javascript ajax

我有这个页面(A)有一个输入字段,一旦你提交它,它会进行AJAX调用并显示结果。现在,我需要在另一个页面(B)上的搜索字段,一旦你提交它,它会将你重定向到前一页(A),结果显示就像你在第一页(A)上做的那样。

处理此问题的最佳方法是什么?

6 个答案:

答案 0 :(得分:1)

您可以使pageA.php获取包含搜索关键字的查询参数,如果为此参数指定了值,则会根据此值显示结果。结果将是一个简单的包含,以便它可以重用于AJAX查询和普通查询。

答案 1 :(得分:1)

我不确定为什么你需要在这个搜索中有两个单独的页面。最简单的方法就是将用户从页面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
   }
}

答案 2 :(得分:0)

使用单一方法执行搜索功能。可以通过两种方式调用此方法。  1.使用Ajax  2.使用url参数

当你从第B页调用页面A时,你会将搜索查询作为url params传递..所以搜索已经完成,页面会显示结果。

当您使用页面A进行搜索时,将调用ajax方法并返回json / xml数据。

基本上,您的页面只需要包含两个逻辑!

答案 3 :(得分:0)

使用单一逻辑(如果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调用onload。

答案 4 :(得分:0)

所以你想要这个Ajax?

要使用Ajax,我建议你创建一个页面ajax.php它所做的只是接受一个查询并吐出结果。

ajax.php?query=foo

然后将结果输出到列表或其他内容中......

然后使用javascript显示它......

但这只是你想使用ajax。

答案 5 :(得分:0)

我使用ajax,jquery和json ...

在页面(A)中

你打电话......

$('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);
     }
   });
});

页面find.php或页面(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"
       }
  ]
}



这样的页面(A)......


<table id='list' >
<thead><tr><th>Id</th><th>Name</th><th>Score</th></tr></thead>
<tbdoy>
</tbody>
</table>

<table id='list' >

<thead><tr><th>