2013-02-18 68 views
0

你好,大家好我想創建一個搜索輸入,將搜索我的所有文章,並顯示相匹配的:使用Ajax搜索帖子在我的網站

我有一個看起來像這樣的工作代碼:

HTML:

<form action="" method="post"> 
      <input type="text" id="search_posts" value="" /> 
    </form> 

的jQuery:

$(document).ready(function() 
{ 
    $("#search_posts").keyup(function() 
    {   

     var posts = $(this).val();   

     $(".posted_post").each(function() 
     { 
      if ($(this).text().search(new RegExp(posts, "i")) < 0) 
      { 
       $(this).fadeOut(); 
      } 
      else 
      { 
       $(this).show(); 
      } 
     }); 
    }); 
}); 

,但現在我沒有做任何數據庫搜索和東西...我可以轉換這個使用AJAX? 那會怎樣?

+0

可能的[jQuery AJAX POST示例]重複(http://stackoverflow.com/questions/5004233/jquery-ajax-post-example/14217926#14217926 ) – 2013-02-18 12:14:29

+0

哪裏是Ajax和PHP? – 2013-02-18 12:15:38

+0

一般來說,你會首先使用類似'$ .ajax()'的方式對服務器端資源進行AJAX調用。該服務器端資源將接受搜索字符串並返回結果。然後,AJAX調用的客戶端響應處理程序將獲得這些結果並顯示它們。你可能不希望在keyup事件中這樣做,因爲它在網絡上會過於喋喋不休,並且即使稍稍延遲也可能表現不正確。看看這個功能的jQuery自動完成插件。 – David 2013-02-18 12:16:02

回答

0

是的,你可以將其更改爲使用AJAX,試試吧:

$(".posted_post").each(function() 
{ 
$.ajax({ 
    url : 'yourphpfunction.php', 
    data: {posts}, 
    success : function(data){ 
     $(this).show(); 
    } 
}); 
} 

現在,你需要做一些PHP函數你要跟帖子VAR值工作,並返回一些東西你phmtml。

胃腸對


+0

非常感謝!這是一個很好的答案。謝謝 – emcee22 2013-02-18 12:22:18

+1

如果你仍然遍歷所有的帖子,那麼這意味着帖子仍然是客戶端。在這種情況下AJAX電話甚至會完成什麼? – David 2013-02-18 12:24:13

+0

稱它爲「PHP函數」聽起來也有點誤導。一個「頁面」可能更類似。但是「函數」很容易讓初學者意識到JavaScript代碼實際上正在執行服務器端PHP函數(這是一個常見的錯誤)。無論是「功能」還是它甚至使用PHP都對AJAX調用無關緊要。它只需要一些響應請求的服務器端資源。 – David 2013-02-18 12:26:50

0

如果只是路過阿賈克斯,請看看這裏: [http://jqapi.com/#p=jQuery.post][1]

你的問題不清楚。那你準備好了嗎? 如果你想抓取您的數據庫,那麼我建議你建立任何形式的REST服務針對的,以JSON格式返回的結果,然後使用

var i = $.map(result); 

有了這個,你將其映射到jQuery對象可以將模板附加到ul列表中,例如通過使用$(object').each(function(item){ });