我正在尝试加载从.aspx页面返回的一些HTML,但在执行AJAX请求所依赖的操作之前需要触发点击事件。更具体地说,我正在做以下操作。当用户在文本字段中输入时,运行此函数...
function KeyPress() {
$("#" + HiddenButtonId).click();
$("#test").load("TempJumpToAJAX.aspx");
}
那么$("#" + HiddenButtonId).click();会在后台文件中设置一些会话数据。具体来说...
Session["SearchText"] = Search.Text;
然后,$("#test").load("TempJumpToAJAX.aspx"); 调用了一个 .aspx 页面,该页面返回一个新构建的选择框...
Response.Expires = -1;
StringBuilder builder = new StringBuilder();
builder.Append("<select id=\"testListId\" name=\"testList\" size=\"4\" style=\"width:200px;\">");
builder.Append("<option>");
builder.Append(Session["SearchText"]);
builder.Append("</option>");
builder.Append("</select>");
Response.ContentType = "text/HTML";
Response.Write(builder.ToString());
Response.End();
问题在于,顺序似乎被搞混了,它会首先尝试附加Session["SearchText"],然后才运行单击事件的代码。因此,它更像是这样的...
function KeyPress() {
$("#test").load("TempJumpToAJAX.aspx");
$("#" + HiddenButtonId).click();
}
命令被反转了。因此,实际上会发生的是会话变量具有空字符串,而不是用户在文本框中键入的内容。对我来说很奇怪的是它似乎不应该有一个空字符串,它似乎应该什么都没有,因为此时会话变量还未被初始化为任何值。我真的不知道发生了什么。也许这是因为经验不足。有什么想法吗?