簡體   English   中英

如何使用AJAX請求將javascript變量分配給ruby變量?

[英]How to assign javascript variable to ruby variable using AJAX request?

我想通過ajax請求將JavaScript變量分配給ruby變量,所以我在JavaScript函數中編寫了以下代碼:

var timezone = jstz.determine();  
var encoded = encodeURIComponent('<%= groups_path%>'+'?@myActivity=' +  <%=@activity.id%>+'&time_zone='+timezone.name());  
    $.ajax({  
            type: "get",  
            url: encoded,  
            dataType: "JSON",  
            success: function(data)  
            {  
            <%=@timezone=params[:time_zone]%>  
            }  
        });   

但是它給出了GET http://0.0.0.0:3001/%2Fgroups%3F%40myActivity%3D1%26time_zone%3DAsia%2FCalcutta 404 (Not Found)錯誤。

你那里的事情有點混亂。

您正在嘗試運行的javascript,因此我假設將在客戶端運行。 您沒有Ruby,僅在服務器端。

通常要做的是編寫Javascript,然后在視圖中呈現Javascript(這意味着它會發送到客戶端)。 您可以通過將預定義值(如路徑)命名為my_client_side_code來將其插入模板中。 js.erb

向服務器發出AJAX請求時,您可以從服務器向客戶端寫入響應(使用Javascript)。 這使客戶端可以評估您在服務器響應中提供的任何Javascript。 在這種情況下,您可以按通常的ERB方式使用Ruby變量。

http://edgeguides.rubyonrails.org/working_with_javascript_in_rails.html有關完整指南,您可以參考rails指南!

祝好運!

Puja,

您做錯了事,您對javascript語言和Ruby語言不太了解。

當您在瀏覽器中看到您的JS代碼時,您將看到如下所示

$.ajax({  
            type: "get",  
            url: encoded,  
            dataType: "JSON",  
            success: function(data)  
            {  
            }  
        });   

由於<%=@timezone=params[:time_zone]%>是Ruby代碼,它將在將html頁面呈現給瀏覽器之前運行,因此將存在靜態JS,HTML腳本將呈現給瀏覽器

首先嘗試了解Ruby和Javascript以及HTMl的流程,這樣您可以更好地進行低估

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM