javascript - 单击第二个按钮后服务器端的隐藏字段会更新

标签 javascript asp.net ajax hidden-field

我有一个隐藏字段,一旦单击按钮,我就会通过 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*/

那么你需要做什么?

关于javascript - 单击第二个按钮后服务器端的隐藏字段会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58919769/

相关文章:

javascript - 浏览器关键代码列表?

c# - 故障异常 - 找不到方法

c# - System.Drawing 可以在 Azure 网站中使用吗?

javascript - Ajax 调用后更新 DOM 的最佳实践

.net - WCF JSON 服务或 HTTPHandler

Javascript/jQuery - 解析返回 'data' 作为 HTML 以供进一步选择?

javascript - 接受用户输入来创建唯一的对象

javascript - Node.js URL POST 重写

javascript - 删除数组中重复的子字符串

c# - Datalist 控件 : binding with ADO. NET 对象