2011-12-27 77 views
1

我正在尋找使用AJAX執行以下操作...Play-Framework&Ajax如何?

我向我的服務器發送了一個請求,需要花費大量的時間才能完成。該請求在控制器中完成,並且在完成時加載HTML頁面以通知用戶其完成。

但是,我想要做的是請求異步發送,加載完成頁面,然後加載請求結果一旦可用。我假設我會使用AJAX來做到這一點,但我不完全確定如何。任何人都可以指點我做這樣的事情嗎?

如果我上面的解釋太混亂了這裏是我想做的事......

1)從控制器發送請求給服務器asyncronously。

2)加載HTML頁面。

3)當請求已完成填充字段在已加載的HTML頁面與來自請求的響應。

+0

您是否需要很長時間,因爲服務器上的事件或長時間計算? – 2011-12-27 23:21:21

回答

0

有2個部分,你需要考慮到這裏:

  1. 該客戶端
  2. 服務器端

對於客戶端一面; Ajax請求(例如,使用jQuery.ajax)按定義是異步的。這意味着,你應該能夠做到以下幾點 - 再次使用jQuery,這使得事情變得更加簡單 - 在你的HTML頁面:

// The ready handler, which fires when the page has been loaded 
$(function() { 
    jQuery.ajax(
     // Do your thing here 
    ); 
}); 

對於服務器端;如果您的操作將在服務器上運行相當長的時間(例如多個Web服務調用或長時間運行的IO操作),您需要使用Play的asynchronous capabilities來讓Play!服務器儘可能有效地執行任務。它通過將長時間運行的操作卸載到他們自己的線程來實現這一點。

剩下要做的唯一事情就是設置一條路徑到你的控制器,實現處理方法並呈現客戶端JavaScript代碼能夠解析的東西(使用Play的renderJson(),JSON可能是最簡單的)。

我自己還沒有使用過這種設置 - 也許有人可以證實這將是做到這一點的方式嗎?