Ajax是:
AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。
AJAX 不是新的编程语言,而是一种使用现有标准的新方法。
AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下。
首先看一下在console中运行的结果:
onreadystatechange 这一步起到了监听的作用:
通俗点说就是:
onreadystatechange监听readyState。
readyState属性一旦变化,就能触发onreadystatechange函数的执行!这是官网上告诉我们的。
值得注意:官网上的叙述有些歧义, 我们可以看到,当xhr.readyState == 4完成时,函数才开始执行!
异步引起的问题。你应该在success函数最后把拼接好的html显示在div中,然后再显示。做法:定义好一个带有表头的空表格,隐藏它,待加载完数据再显示即可。
<table id="t2" style="display:none">
<tr>表头</tr>
</table>
$.ajax({
type: "POST",
url: "<%=path %>/two",
dataType: "json",
data:{'liDu':liDu,'startTime':startTime,'endTime':endTime},
success: function(returnedData){
var html = ""
var tdHead = "<td height='20'><div align='center'><span class='STYLE1'>"
var tdFoot = "</span></div></td>"
$("#t2 tr:gt(0)").remove()//每次刷新,但是不移除表头第一行。
for(var i=0i<returnedData.lengthi++){
var countInfo = returnedData[i]
var totalCount = countInfo.totalCount
var sucCount = countInfo.sucCount
var failCount = countInfo.failCount
var unknowCount = countInfo.unknowCount
var sucPercent = countInfo.sucPercent
var failPercent = countInfo.failPercent
var unknowPercent = countInfo.unknowPercent
var countTimeZone = countInfo.countTimeZone
html += "<tr>" + tdHead + (i + 1) + tdFoot +
tdHead + totalCount + tdFoot +
tdHead + sucCount + tdFoot +
tdHead + sucPercent + tdFoot +
tdHead + failCount + tdFoot +
tdHead + failPercent + tdFoot +
tdHead + unknowCount + tdFoot +
tdHead + unknowPercent + tdFoot +
tdHead + countTimeZone + tdFoot + "</tr>"
}
$("#t2").append(html)
$("#t2").show("slow")//我这是一个表格。
}
})
ajax异步请求数据,在前端用js拼接也好,在后端拼接整体当作字符串返回给前端也好,前端拿到数据传到html中时会发现,拼接的html的css已经失效。
然后发现样式失效之后,页面展示就这样了
后来才发现,在ajax回调中,需要再次调用一下jquery *** 作dom的方法,如图下图所示
经过重新渲染之后,页面很快就趋于平整啦。
完!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)