2013-05-12 26 views
2

我是新來的電梯,想要在我的項目中執行以下操作:如何使用電梯確認進行AJAX呼叫?

頁面中有一個「刪除」鏈接,當用戶點擊它時,會有一個確認文本「你確定要刪除?」。如果用戶點擊「是」,它將發起AJAX調用以刪除服務器端的某些內容,然後顯示「操作完成」通知,3秒後,頁面將被重新加載。

如何在lift中執行此操作?我搜查了很多,但沒有找到一個正確的例子。

我只能現在這樣做:

SHtml.a(()=>Confirm("are you sure to delete", ???), "delete") 

回答

4

最簡單的方法是將結合JsCmds.Confirm使用SHtml.ajaxInvoke。它將創建一個服務器端函數並返回一個帶有functionId和JsCmd的元組。所以,像這樣的東西應該做你正在做的事情:

SHtml.a(() => { 
    JsCmds.Confirm("Are you sure you want to delete?", { 
    SHtml.ajaxInvoke(() => { 
     //Logic here to delete 

     S.notice("Operation complete") 
     JsCmds.After(3 seconds, JsCmds.Reload) //or whatever javascript response you want, e.g. JsCmds.Noop 
    })._2 
    }) 
}, "delete") 

在上面 - 點擊鏈接將觸發確認。如果您選擇確定,那麼它會向您的功能發出ajax調用並顯示通知。您可以在需要JsCmd的任何SHtml項目中使用該項目。

如果您希望在超時後重定向頁面,您可以編寫一個客戶端JavaScript函數來執行您所需的操作,並使用JsCmds.Run來調用它。

+0

我得說聲謝謝1000次 – Freewind 2013-05-13 08:41:29

+0

是的,這就是訣竅得到它的工作:) BTW,'._2 '可以用'.cmd'代替 – VasyaNovikov 2013-05-13 09:54:26

0

使用reactive-web

  confirm("Are you sure you want to do that?") { 
       case true => 
       // handle yes, if so desired 
       case false => 
       // handle no, if so desired 
      } 

見scaladocs:http://reactive-web.tk/reactive-web-api/#reactive.web.package

+0

請注意,您從處理確認響應的ajax請求(如任何ajax請求)的線程發送到瀏覽器的任何javascript將自動作爲ajax響應的主體發回;你不必關心這些細節。 – nafg 2013-05-13 07:05:19