function addTableRow(sName, sClass, sBirth, sConstell, sMobile) {
//表格添加一行的相关操作
var oTable = document.getElementById("member");
var oTr = oTable.insertRow(oTable.rows.length);
var aText = new Array();
aText[0] = document.createTextNode(sName);
aText[1] = document.createTextNode(sClass);
aText[2] = document.createTextNode(sBirth);
aText[3] = document.createTextNode(sConstell);
aText[4] = document.createTextNode(sMobile);
for (var i = 0; i < aText.length; i++) {
var oTd = oTr.insertCell(i);
oTd.appendChild(aText[i]);
}
}
网站中实际返回xml的工作通常是由asp.net jsp php等服务器脚本动态生成的,换句话说,xmlHttp.open()中的URL地址仍然.aspx等动态页面的后缀,它们返回的XML是用户请求生成的。
4.处理多个异步请求
而实际页面中往往不止一个异步请求,比如在一个表单中,很多单元格都需要发生异步请求来验证,再加上网速的影响,第一个异步请求尚未完成,很可能就已经被第2个请求覆盖。
页面内容不做多介绍,我们发现,发送的第一个请求没有响应,因为它被第二个请求覆盖了。
通常解决的办法是将xmlHttp对象作为局部变量来处理,并且在收到服务器返回值后手动将其删除。如下所示:
复制代码 代码如下:
function getData(oServer, oText, oSpan) {
var xmlHttp; //处理为局部变量
if (window.ActiveXObject)
xmlHttp = new ActiveXObject("Microsoft.XMLHttp");
else if (window.XMLHttpRequest)
xmlHttp = new XMLHttpRequest();
var queryString = oServer + "?";
queryString += createQueryString(oText) + "×tamp=" + new Date().getTime();
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
var responseSpan = document.getElementById(oSpan);
responseSpan.innerHTML = xmlHttp.responseText;
delete xmlHttp; //收到返回结构后手动删除
xmlHttp = null;
}
}
xmlHttp.open("GET", queryString);
xmlHttp.send(null);
}
以上就是本文的全部内容了,虽然有点长,但是还是希望小伙伴们能够好好的读一读,这对于学好ajax非常重要,希望大家能够喜欢。
您可能感兴趣的文章: