2012-10-31 34 views
0

我正在使用cakePHP 1.3,並希望使用AJAX從我的搜索視圖到我的控制器中的搜索操作。我使用原型和scriptaculous,它工作正常,但需要使用純粹的jQuery。在cakePHP中使用純粹的jQuery AJAX 1.3

搜索行動基本上看起來如下:

public function search() { 
    if (empty($this->data)) { 
    } else { 
     $request = $this->data; 
     $this->set('data', $this->Event->search($request['Event']['search'])); 
    } 
} 

的看法目前是這樣的:

<script type="text/javascript"> 

$(function() { 

    $(".search_button").click(function() { 
     var searchString = $("#search_box").val(); 
     var data = searchString; 

     if(searchString) { 

      $.ajax({ 
       type: "POST", 
       url: "/events/search", 
       data: data, 
       beforeSend: function(html) { // this happens before actual call 
        $("#results").html(''); 
        $("#searchresults").show(); 
        $(".word").html(searchString); 
       }, 
       success: function(html){ // this happens after we get results 
        $("#results").show(); 
        $("#results").append(html); 
       } 
      });  
     } 
     return false; 
    }); 
}); 
</script> 

<div id='container'> 
<h1>Corporate Events</h1> 

<form method="post" action="search"> 
    <input type="text" name="search" id="search_box" class='search_box'/> 
    <input type="submit" value="Search" class="search_button" /><br /> 
</form> 
<div id="searchresults">Search results :</div> 
<ul id="results" class="update"> 

是什麼使「數據」變量可以被$ this->最好的辦法控制器中的數據?我用類似的問題檢查了其他線程,但無法看到如何執行此操作。

謝謝!

回答

0

發送它作爲POST(參考http://api.jquery.com/jQuery.post/)或url_encode(谷歌「javascript url encode」)字符串並將其附加到URL。不知道哪個更好,兩者都應該工作並且易於實施。

+0

這無疑使我朝着正確的方向前進。主要問題是我定義var data = searchString的方式;當它應該是更類似於:var data = {'data [Event] [search]':searchString} ;,但是您的解決方案導致我找到我的問題,並提供了一種更優雅的解決方案,通過使用$ .post ()而不是$ .ajax()。謝謝! – Lee