键入时的实时搜索结果......我是否正确地进行此操作? jQuery + PHP

时间:2010-03-19 20:05:28

标签: php jquery

我有一个搜索输入和一个隐藏的div。当你开始在搜索输入中输入时,隐藏的div变得可见并且结果被引入。在这种情况下,我正在搜索客户端名称。

一切正常,但我认为我的代码可能更好,但我不确定从哪里开始。每个keyup都请求一个PHP脚本,该脚本访问数据库中的表以查找类似的字符串。但是在我的PHP脚本中,我回应了一些JS / jQuery,我不确定它是不是很好的做法。以下是我的代码。我是以正确的方式来做这件事还是我完全偏离基地?有任何改进建议吗?

的Javascript

$("#search").keyup(function() {
 $("#search_results").show("fast");
 $.ajax
 ({
  type: "POST",
  url: "http://localhost:8888/index.php/welcome/search/" + $("#search").val(),
  success: function(html)
  {
   $("#search_results").html(html);
  }
 });
});

PHP

function search($search_string = false)
    {
 if ($search_string)
 {
  $this->db->like('name', $search_string);
  $query = $this->db->get('clients');

  if ($query->num_rows() == 0)
  {
   echo "No client exists.";
  }
  else
  {
   foreach ($query->result() as $row)
   {
    echo '<script>';
    echo '
    $("#client_results_'.$row->id.'").hide();
    $("#'.$row->id.'").toggle(function()
    {
     $.ajax
     ({
      type: "POST",
      url: "http://localhost:8888/index.php/welcome/search_client_ads/" + '.$row->id.',
      success: function(html)
      {
       $("#client_results_'.$row->id.'").html(html).show("fast");
      }
     });
    }, function()
    {
     $("#client_results_'.$row->id.'").hide("fast").html("");
    });';
    echo '</script>';
    echo '<p><span id="'.$row->id.'">'.$row->name.'</span></p>';
    echo '<div id="client_results_'.$row->id.'"></div>';
   }
  }
 }
 else
 {
  echo '';
 }
}

function search_client_ads($client_id)
    {
 $query = $this->db->get_where('online_ads', array('client' => $client_id));

 if ($query->num_rows() == 0)
 {
  echo "No ads exist.";
 }
 else
 {
  foreach ($query->result() as $row)
  {
   echo $row->id;
  }
 }
}

1 个答案:

答案 0 :(得分:1)

不是返回大量脚本,而是尝试返回一个json字符串并让jquery循环遍历它。