如何将javascript变量传递给服务器端方法

我面临的问题就是我无法将javascript变量传递给服务器端我知道它在这种情况下无法实现,所以我尝试使用jQuery将值设置为asp隐藏字段并获取服务器中标签的值一方但不幸的是我为隐藏的领域获得了空值。 帮助我解决这个问题

$(document).ready(function(){ var DataID = "4325"; testDataVal(DataID); }); function testDataVal(DataID){  // How to pass javascript variable to server side } 

隐藏场方法:

 $(document).ready(function(){ var DataID = "4325"; testDataVal(DataID); }); function testDataVal(DataID){ $("#").val(DataID); alert($("#").val(DataID)); // Here using javascript I can able to set the value and when I alert the value it is displayed  // here the hiddenfield value is empty }  

首先……你不应该像你那样混合服务器代码和客户端代码。

这是设计代码的一种糟糕方式。 始终尝试分离客户端和服务器代码。 它们在不同的时刻,地点和不同的环境下执行……将它们放在一起最终会使您难以调试错误。

我敢打赌,你在这里遇到的问题是由于这种编码方式。

你在你的代码片段上说

 <%=RenderMethod(hdnDataVal.Value) %> // here the hiddenfield value is empty 

加载页面并执行服务器代码时,$(document).ready()中的代码尚未触发,因为它会在整个页面加载完毕时触发。 因此, 将任何值放入变量之前 ,RenderMethod会触发。

尝试使用$ .ajax();

 var url = 'my-url.aspx'; $.ajax({ url: url, type: 'POST', data: {'variable_name': my_variable }, success: function(html) { alert('ok'); }, }); 

和服务器端的接收器:

 string my_variable = Request.Form['variable_name']; 

您可以使用Page Method从客户端进行服务器端调用。 它可能是实现你想要的最简单的方法。

首先,您需要在启用了Page Methods aspx页面中包含脚本管理器:

  

现在,您可以调用服务器端方法并将其传递给您想要的客户端数据,如下所示:

  

如果已成功调用服务器端方法,则调用OnSuccess函数。 否则调用OnError函数。

这是如何在.aspx.cs文件中声明Page Method

 [System.Web.Services.WebMethod] public static string RenderMethod(string dataID) { return "Got here!"; } 

如果在RenderMethod放置断点,则可以validation客户端数据(即值“4325”)是否正确传递给它。