所有,我正在开发一个DashBoard,它需要部分更新UI内容,我尝试用异步Jquery.ajax
实现它,但我发现异步请求完全不起作用。所有内容仅在最后一次完成后才更新。所以我做了一个小测试,试着找出它发生了什么。
以下是我的代码。请检讨一下。
在asp.net页面中。
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
$(function () {
$("#btnMultipleRequest").bind("click", function () {
$("#imgLoading").show();
$("#divResponse").empty();
loopRequest();
});
$("#imgLoading").hide();
});
function loopRequest() {
var arr = [1, 2, 3, 4, 5];
$.each(arr, function () {
var i = this;
$.ajax({
type: "Get",
async: false,
url: "server.aspx?waittime=" + i,
success: function (data) {
$("#divResponse").append("<br>" + data);
if (data == "5") {
$("#imgLoading").hide();
}
}
});
});
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input id="btnMultipleRequest" value="BeginMultipleRequest" type="button" />
<img src="img/wait.gif" id="imgLoading" alt=""/>
<div id="divResponse">
</div>
</div>
</form>
</body>
</html>
代码隐藏代码
protected void Page_Load(object sender, EventArgs e)
{
string sTime = Request.Params["WaitTime"];
if (!string.IsNullOrEmpty(sTime))
{
Thread.Sleep(int.Parse(sTime) * 1000);
Response.Write(sTime);
}
}
测试结果是它只能在firefox中运行,我的意思是在firefox中所有请求都是独立的,页面更新不会等待所有请求完成的响应。但不适用于IE和Chrome。因为页面将被更新,直到最后一个请求结束。我不知道如果我错过了什么,请帮助我。
答案 0 :(得分:1)
您在这里做的是使用async false
调用ajax调用,使其同步,因此请尝试修改代码并删除async: false,