如何将动态ID传递给JQuery中的函数

时间:2012-04-11 19:49:54

标签: javascript jquery asp.net

更新

在我的代码隐藏代码中,我有公共变量和像这样的分析

public string Id { get { return Request.QueryString["id"].ToString(); } }` 

并在.aspx页面中我尝试访问

$(this).attr("EmployeeId", Id);

获取错误名称

'Id' does not exist in the current context

结束更新

我有两个aspx页面:

1) employee.aspx
2) employee_detail.aspx

如何将动态ID从一个页面传递到另一个页面

以下代码位于employee.aspx页面

//more code here..
//but to relvant to my question is here...

var submitButton = function()  {             
  //more code here...         
  if(employeeId != ""){   //redirecting here...
    window.location.href = "employee_detail.aspx"; 
 }    
} 

所以在employee_detail.aspx页面中我有一个jquery函数,目前我正在硬编码id 像这样的东西:

<script type="text/javascript"> 

$(document).ready(function () { 

 var id = 'A42345'; //hardcoded.... 

$(this).attr("EmployeeId", id);  

</script>

所以我的问题是,我正在寻找一种方法来传递来自employee.aspx的ID并在employee_detail.aspx

中接收

我想这样做但是出于安全原因我不想在url中公开id:

window.location.href = "mypage.aspx?id = " + id; 

6 个答案:

答案 0 :(得分:0)

您应该认真研究实现会话并将用户ID存储在会话变量中,而不是像这样手动传递它。阅读:http://msdn.microsoft.com/en-us/library/ms178581.aspx

但是如果你坚持,你可以使用jQuery将数据发布到第二页,而不是使用GET,然后在服务器(ASP)端,将POST变量值回显到Javascript。

答案 1 :(得分:0)

你可以在javascript中组合你的动态代码(并且顺序应该是这样的)请注意我使用ASP经典。

<% 
Dim ID
ID = Request.QueryString("id") 'Or any other request
%>

<script type="text/javascript"> 
var id = '<%=id%>'//OR any dynamic request
$(this).attr("EmployeeId", id); 
</script>

答案 2 :(得分:0)

尝试这种方式:

$.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "employee_detail.aspx",
            dataType: "json",
            data: { id: 1 }, // or the string: 'id=1'
            complete:
            function () {
                window.location = "employee_detail.aspx";
            }

    });

来自http://api.jquery.com/jQuery.ajax/

答案 3 :(得分:0)

您可以在服务器代码中将ajax与webmethod一起使用。在Web方法中,您可以使用HttpContext.Current

访问Sessions
$.ajax({
    type: "POST",
    url: "mypage.aspx/ServerMethodName",    
    data: '{"id":"' + $("#divID").text() + '"}',        
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (returnValueFromServerMethod) {
        if(returnValueFromServerMethod.d != "")
            //do something great

    }
});

[WebMethod]
public static string ServerMethodName(string id)
{
    HttpContext.Current.Session["ID"] = id;            
}

您需要在page.aspx中添加一个以启用页面方法。

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">                    
</asp:ScriptManager>

您可以使用更干净的服务.svc替换页面方法内容。

答案 4 :(得分:0)

好吧,如果你只是想传递一个变量,那么cookie就可以完成这项工作。显然,这不是一种存储数据的安全方法,而是为普通用户提供了一个不可见的层。

https://github.com/carhartl/jquery-cookie

这个插件很小很简单......

在第一页上设置Cookie:

$.cookie('the_cookie', 'the_value');

$.cookie('the_cookie', 'the_value', { expires: 7 });

要获得下一页的价值:

$.cookie('the_cookie'); 

答案 5 :(得分:0)

我过去喜欢使用的一个选项是将表单提交到正在加载的页面。该表单有一个隐藏字段,其中包含javascript要传递给页面的JSON数据。然后,服务器查找JSON数据,解析它并使用它包含的值。

这有点类似于ASP的视图状态和/或会话,但无需打开视图状态或会话即可正常工作。