我面临的问题是,我无法将 javascript 变量传递到服务器端,我知道在这种情况下这是无法实现的,所以我尝试使用 jQuery 将值设置为 asp 隐藏字段,并获取服务器端的标签,但不幸的是我得到的隐藏字段为空值。帮我解决这个问题
代码
$(document).ready(function(){
var DataID = "4325";
testDataVal(DataID);
});
function testDataVal(DataID){
<%=RenderMethod(DataID) %> // How to pass javascript variable to server side
}
<小时/>
隐藏字段方法:
$(document).ready(function(){
var DataID = "4325";
testDataVal(DataID);
});
function testDataVal(DataID){
$("#<%=hdnDataVal.ClientID %>").val(DataID);
alert($("#<%=hdnDataVal.ClientID %>").val(DataID)); // Here using javascript I can able to set the value and when I alert the value it is displayed
<%=RenderMethod(hdnDataVal.Value) %> // here the hiddenfield value is empty
}
<asp:HiddenField runat="server" ID="hdnDataVal" />
最佳答案
首先...您不应该按照您的方式混合服务器代码和客户端代码。
这是一种糟糕的代码设计方式。始终尝试将客户端和服务器代码分开。它们在不同的时刻、地点和不同的情况下执行...将它们放在一起最终会让您遇到难以调试的错误。
我敢打赌,您在这里遇到的问题是由于这种编码方式造成的。
你在代码片段中说
<%=RenderMethod(hdnDataVal.Value) %> // here the hiddenfield value is empty
当您的页面加载并执行服务器代码时, $(document).ready() 内的代码尚未触发,因为它会在整个页面完成加载时触发。因此,您的 RenderMethod 在您将任何值放入变量之前就会触发。
关于javascript - 如何将 JavaScript 变量传递给服务器端方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26988957/