第二次单击按钮后,服务器端的隐藏字段更新

问题描述 投票:0回答:1

我有一个隐藏字段,一旦单击一个按钮,便会通过Javascript更新,但是当我尝试访问后面的代码时,它没有任何价值,直到我第二次单击该按钮为止。通过浏览器检查隐藏字段值时,我可以看到它。

Default.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;
}
javascript asp.net ajax hidden-field
1个回答
0
投票

第一次单击按钮时看不到隐藏字段的内容的原因是,单击按钮后,隐藏字段的内容已填充到客户端。例如:

1º客户端:用户单击Button1

2º服务器端:方法RetrieveHtml向客户端发送“订单”,以使用提供的参数运行LoadHtml方法。 此刻,由于尚未执行LoadHtml,DataHiddenField.Value在服务器端不可见。

3º客户端:执行在省略的URL上调用服务器端的LoadHtml。

4º服务器端:在省略的url中执行代码,并将内容返回给客户端。

5º客户端:成功函数在DataHiddenField中添加内容。 仅现在您将能够在服务器端获取此内容。

Obs:DataHiddenField.Value将始终与RetrieveHtml方法中的最后一次执行有关。

您是否可以在按Button1之前在浏览器上查看隐藏字段值?

© www.soinside.com 2019 - 2024. All rights reserved.