我有一个隐藏字段,一旦单击一个按钮,便会通过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;
}
第一次单击按钮时看不到隐藏字段的内容的原因是,单击按钮后,隐藏字段的内容已填充到客户端。例如:
1º客户端:用户单击Button1
2º服务器端:方法RetrieveHtml向客户端发送“订单”,以使用提供的参数运行LoadHtml方法。 此刻,由于尚未执行LoadHtml,DataHiddenField.Value在服务器端不可见。
3º客户端:执行在省略的URL上调用服务器端的LoadHtml。
4º服务器端:在省略的url中执行代码,并将内容返回给客户端。
5º客户端:成功函数在DataHiddenField中添加内容。 仅现在您将能够在服务器端获取此内容。
Obs:DataHiddenField.Value将始终与RetrieveHtml方法中的最后一次执行有关。
您是否可以在按Button1之前在浏览器上查看隐藏字段值?