我有一个隐藏字段,一旦单击按钮,我就会通过 Javascript 更新该字段,但是当我尝试在后面的代码上访问它时,直到我第二次单击该按钮为止,该字段没有任何值。当我通过浏览器检查隐藏字段值时,我能够看到它。
默认.aspx
<script type="text/javascript">
function LoadHtml(inputState, inputStateAbbr, inputProgramType, inputHealthCenter, inputCity) {
$.ajax({
url: omitted,
type: "POST",
async: false,
data: {
state: inputState,
stateAbbr: inputStateAbbr,
programType: inputProgramType,
healthCenter: inputHealthCenter,
city: inputCity
},
success: function(result) {
document.getElementById('DataHiddenField').value = result;
},
error: function (jqXHR, textStatus, errorThrown) {
//omitted
}
});
}
</script>
<asp:Button ID="Button1" runat="server" OnClick="Button1_OnClick" CssClass="top-buffer" Text="Compare Sites" />
<asp:HiddenField ID="DataHiddenField" runat="server" ClientIDMode="Static" />
后台代码
protected void Button1_OnClick(object sender, EventArgs e)
{
RetrieveHtml();
}
private string RetrieveHtml(){
Page.ClientScript.RegisterStartupScript(this.GetType(), "MyKey1", "LoadHtml('Alabama', 'AL', 'Program Awardee Data', 'Alabama Regional Medical Services', 'Birmingham');", true);
return DataHiddenField.Value;
}
最佳答案
您似乎对网页和 asp.net webforms 的工作方式存在根本性的误解。通常,当表单将表单发布到服务器时,会发出对新页面的请求,服务器会对表单变量进行一些处理并发送新页面作为响应。此时客户端和服务器端之间存在断开连接。
让我们剖析一下您的代码:
<!-- Causes a postback to the server, no javascript run yet -->
<asp:Button ID="Button1" runat="server" OnClick="Button1_OnClick" CssClass="top-buffer" Text="Compare Sites" />
后台代码
private string RetrieveHtml(){
/*Tells the page to run this script - WHEN IT NEXT LOADS*/
Page.ClientScript.RegisterStartupScript(this.GetType(), "MyKey1", "LoadHtml('Alabama', 'AL', 'Program Awardee Data', 'Alabama Regional Medical Services', 'Birmingham');", true);
/*Gets the value from the hidden field.*/
/*On first click the above java-script HAS NOT RUN*/
return DataHiddenField.Value;
}
/*After the server has finished work, it sends a new page response.*/
/*THEN the javascript runs*/
那么你需要做什么?
- 在页面加载时运行 AJAX Api 调用。
- 您可以在回发之前运行javasript。看看OnClientClick
- You can access the API server side and populate your data that way
关于javascript - 单击第二个按钮后服务器端的隐藏字段会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58919769/