2012-03-19 27 views
8

Có thể đọc giá trị của một biến động như httpRequest.getSession ("attr_name") từ bên trong JavaScript không?JavaScript có thể đọc đối tượng Phiên HTTP không?

+3

Nếu bạn có phương thức máy chủ có thể trả về cuộc gọi ajax, có. – asawyer

+0

Bạn đang sử dụng ngôn ngữ phía máy chủ nào? Phiên được theo dõi như thế nào? –

+1

Nếu bạn có nghĩa là phía máy khách JS: Không. Nếu bạn có một số môi trường JS trên máy chủ của bạn, bạn có thể nạp các tham số đó vào nó. Tôi cho rằng ngôn ngữ máy chủ của bạn là Java? – Sirko

Trả lời

13

(Với Javascript, tôi cho rằng bạn có nghĩa là kịch bản client trong trình duyệt.)

Không, đó là không thể. Nội dung của đối tượng Session không bao giờ rời khỏi máy chủ, vì vậy kịch bản máy khách không thể đọc trực tiếp dữ liệu Phiên.

Nếu bạn muốn truy cập nó trong trình duyệt, bạn phải đọc dữ liệu ngoài đối tượng Phiên và gửi dữ liệu đó trong phản hồi (ví dụ trong trường ẩn) hoặc cung cấp dịch vụ web đọc dữ liệu từ đối tượng Session và trở về trình duyệt.

+0

bạn có thể hiển thị một số bản sao lưu cho bản sao kê của mình không? – FranXho

3

Như tôi đã nói trong bình luận của mình, cách duy nhất sẽ là một kiểu gọi Ajax và yêu cầu nó từ máy chủ. Tôi không biết những gì phụ trợ của bạn bằng cách sử dụng, đây là cách tôi sẽ làm điều đó trong Asp.net MVC và jQuery.

(Nếu có lỗi cú pháp nhỏ, tôi xin lỗi - không ở phía trước của một trình biên dịch)

public class HomeController : Controller 
{ 

    //abstract the session code away, don't let the evil javascript touch 
    //it directly. Ideally this would all be in a seperate logic class or something. 
    public string NameAttribute 
    { 
     get 
     { 
      return Session["attr_name"] as string ?? string.empty; 
     } 
    } 
    [HttpGet] 
    public string GetNameAttribute() 
    { 
     return NameAttribute; 
    } 
    public ActionResult Index() 
    { 
     return View(); 
    } 
} 



<script> 
$(function(){ 
    $.get('home/GetNameAttribute', function(response) { 
     var name = response; //don't forget error checking, ommited 
    }); 
}); 
</script> 

Ngoài ra, bạn có thể luôn luôn ghi lại những giá trị mà bạn cần vào lĩnh vực tiềm ẩn, và đọc chúng với javascript bình thường .

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