2011-03-08 115 views
1

我在我的web應用程序中使用條形圖(使用javascript繪製)。它可以比屏幕更寬,所以有一個箭頭可以沿着X軸移動圖形(再次使用javascript)。如何從JavaScript從服務器獲取數據?

我想在用戶單擊箭頭時重新繪製圖形。生成圖形所執行的數據操作對於客戶端來說過於複雜,我不想一次全部發送,因爲如果用戶從不決定滾動,這將是浪費。

取而代之的是,在點擊時,我想向服務器發送請求,以獲取繪製圖的下一部分所需的新數據。如何才能做到這一點?

注:我只想請求數據,而不是新的頁面。服務器端是Ruby on Rails v 3.0.4。

回答

1

您需要的Ajax這一點。您可以使用內置的Prototype或任何其他Javascript庫來實現此目的。所以,讓你使用jQuery的例子,你可以在這個例子中添加一個單擊處理

$('#target').click(function() { 
    // Use the $.ajax or equivalent function to send a request to a method in your controller 
}); 

所以,在你的控制器,你既可以提DOM操作代碼的方法,象下面這樣:

def target_method 
    # Process data 
    # dom manipulation code 
    render :update do |page| 
    #use a rails javascript helper like replace_html or the likes 
    end 
end 

或者轉到Unobtrusive Javascript方式並在js.erb文件中插入DOM操作代碼。

下面是一些有用的鏈接

  1. Rails API on Prototype helpers
  2. Unobtrusive JavaScript on Rails
+0

感謝您的幫助。我會按照你的建議去使用jQuery,因爲我已經在使用它了。在這一點上包括原型將導致它與jQuery爭奪'$'符號。 – providence 2011-03-08 19:05:28

+1

如果你需要使用這兩個庫,你可以使用jQuery的noconflict方法。 http://api.jquery.com/jQuery.noConflict/ – Shreyas 2011-03-08 19:11:16