2010-10-18 49 views
2

我有一個搜索框,發送ajax請求到一個片段。當被剪切的函數被調用時,我希望搜索查詢通過錨點哈希(ala:http://localhost/search#param)添加到URL中,以便在用戶複製URL並稍後返回時重新創建搜索請求。很明顯,另一方面,這是拉片段中的錨字段,以便搜索可以根據需要重新創建。我有點失落,至於如何做到這一點..甚至不知道一個好的起點。有關如何在Lift中執行此操作的任何提示或提示將非常受歡迎。重定向在電梯搜索參數

回答

2

我剛剛得到這個工作..這裏是我的模板:

<lift:surround with="default" at="content"> 
    <lift:searchSnippet.search> 
     <s:query/> 
     <s:submit/> 
    </lift:searchSnippet.search> 
</lift:surround> 

我的片斷:

class SearchSnippet extends Logger { 

    val ns = "s" 

    def search(in: NodeSeq) : NodeSeq = { 
    // save the url of the original page request 
    val url = S.uriAndQueryString.openOr("") 

    var query = "" 
    def submit : JsCmd = { 
     JsRaw("window.location.href = '" + url + "#" + query + "'") 
    } 
    SHtml.ajaxForm({ 
     bind(ns, in, 
     "query" -> SHtml.text(query, { q => 
      query = q 
     }), 
     "submit" -> (SHtml.submit("Search",() => {}) ++ SHtml.hidden(submit _))) 
    }) 
    } 
} 

關鍵是要保存的URL時,片段最初呈現,讓你不要」 t獲取ajax表單提交的ajax_request/... uri。

+0

不重新創建/執行已包含#值的URL的請求。 – Allyn 2010-10-25 20:56:54

+0

錨標籤不會被瀏覽器提交給服務器。但是,您可以使用Javascript(location.hash.substring(1))獲取此錨點標記,然後使body#onLoad調用來獲取查詢結果。 – Collin 2010-10-26 00:13:03

0
LiftRules.satelessRewrite.append{ 
case RewriteRequest(ParsePath(List("path","to", myParam), _, _, _(, _, _) => RewriteResponse("path" :: "to" :: Nil, Map("myParam" -> myParam)) 
} 

請注意,我複製這個,並沒有粘貼。所以如果它不起作用,你可能應該看看這本書。