2011-08-09 32 views
6

Tôi có một câu hỏi sử dụng các giá trị biến grails trong mã javascript trong một tệp GSP.Grails sử dụng grails var trong GSP Site bên trong javascript

Ví dụ: Tôi có giá trị phiên session.getAttribute ("selectedValue") và tôi muốn sử dụng giá trị này bên trong phần mã javascript.

giải pháp của tôi bây giờ là (bên trong một GSP):

<% 
    def js = new String("<script type=\"text/javascript\">") 
    js += "var jsSelectedValue = " + session.getAttribute("selectedValue") + ";" 
    js += "</script>" 
    out << js 
%> 

và sau đó tôi có khối javascript bên trong GSP của tôi với jQuery Stuff và như vậy, ở đó tôi cần giá trị này.

Có cách nào khác để có biến số grails có thể truy cập bên trong mã javascript thuần túy không?

Và câu hỏi thứ hai, chính xác theo cách khác. Tôi chọn ví dụ trong một hộp thả xuống và nhấp vào "lưu" và sau đó tôi muốn lưu trữ giá trị $ ("# select-box"). Val() bên trong biến phiên từ JS-part.

Cảm ơn bạn rất nhiều trước sự giúp đỡ của bạn.

Chúc mừng,

Marco

+0

Bạn không thực sự tham chiếu bất kỳ biến số grails nào trong mã ở trên. Những gì bạn đang thực sự làm là sử dụng tạo mã javascript từ một mẫu. Mẫu này có thể truy cập phiên vì nó được xử lý ở phía máy chủ. –

Trả lời

12

Tại sao không sử dụng thẻ GSP javascript? Giải pháp có thể trông giống như sau:

<g:javascript> 
    var jsSelectedValue = "${session.selectedValue}"; 
</g:javascript> 
+2

Không chắc chắn nếu bất kỳ ai khác sẽ gặp khó khăn theo cùng cách tôi đã làm, nhưng hãy đảm bảo rằng khai báo var nằm trong một thẻ riêng biệt so với bất kỳ tập lệnh nào có tham số nguồn. – RasTheDestroyer

1

Giải pháp cho vấn đề đầu tiên của bạn có thể thực hiện như sau:

UPDATE: Sửa đổi theo @ Medrod của giải pháp:

<script type="text/javascript"> 
var jsSelectedValue = "${session.selectedValue}"; 
</script> 

Và đối với câu hỏi thứ hai:
Gửi giá trị đã chọn tới máy chủ và đặt biến phiên.

+0

Cảm ơn Medrod và Zedwal! Để trả lời câu hỏi thứ hai, nếu tôi gửi mọi thứ tới máy chủ (ví dụ: JSON POST), mọi chữ viết kịch bản có thể chuẩn bị một số giá trị biểu mẫu cục bộ và chuẩn bị bài đăng và thao tác ajax ... đúng không ?! – grailsInvas0r

Các vấn đề liên quan