messageNode[0] is undefined报错

技术科 2008-07-20 04:59:45
提示messageNode[0] is undefined

//用户名校验
//使用XMLHTTPRequest对象进行Ajax异步数据传输
var xmlhttp;
function verify() {
//0.使用dom的方式获取文本框中的值
//document.getElementById("username")是dom中获取元素节点的方法,
//一个元素节点对应Html页面中的一个标签,如<input>
//value可以获取一个元素节点的value属性值
var username = document.getElementById("username").value;

//1.创建XMLHTTPRequest对象
//五步操作法中最复制的一步
//需要针对IE和其他浏览器建立这个对象的不同方式和代码

if (window.XMLHttpRequest) {
//针对Firefox,Moziller,Opera,IE7,8,Safari
xmlhttp = new XMLHttpRequest();
//针对某些特定的Moziller的bug的修正
if (xmlhttp.overrideMimeType) {
xmlhttp.overrideMimeType("text/xml");
}
} else if (window.ActiveXObject) {
//针对IE6,IE5.5,IE5
//两个可以用于创建XMLHTTPRequest对象的控件名称,保存在一个js数组中
//排在前面的较新
var activexName = ["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
for (var i = 0; i < activexName.length; i++)
{
try {
//取出一个控件名进行创建,如果创建成功就终止循环
//失败则抛出异常,尝试新的创建
xmlhttp = new ActiveXObject(activexName[i]);
break;
}
catch(e) {
}
}
}

//判断创建XMLHTTPRequest对象是否成功
if (!xmlhttp) {
alert("创建失败");
return;
}
else {
alert(xmlhttp.readyState);
alert("创建ok");
}

//2.注册回调函数
//注册回调函数时,只写函数名,不可加括号
//如果加上括号,就会把函数的返回值注册上,这是错误的
xmlhttp.onreadystatechange = callback;

//3.设置连接信息
//第一个参数为传输方式
//第二个为url地址
//第三个参数为交互方式,true--异步,false--同步
// xmlhttp.open("GET", "AJAXServlet?name=" + username, true);

//POST方式传输
xmlhttp.open("POST", "AjaxXmlServlet", true);
//需要自己设置http请求头
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
//POST方式发送数据
xmlhttp.send("name=" + username);

//4.发送数据,开始和服务器交互
//同步方式下,send这段在服务器数据回传后才执行完
//异步方式下,send这段会立即执行
// xmlhttp.send(null);

}

//回调函数
function callback() {
//alert(xmlhttp.readyState);
//5.接收响应数据
//判断对象的交互完成
//xmlhttp.readyState共五种状态
if (xmlhttp.readyState == 4) {
//判断http交互是否成功
if (xmlhttp.status == 200) {
//使用responseXML的方式来接收XML数据对象的DOM对象
var domObj = xmlhttp.responseXML;
//<message>123</message>
//dom中使用getElementsByTagName可根据标签名获取其元素节点,返回一个数组
var messageNode = domObj.getElementsByTagName("message");
// alert(messageNodes.getElementById());

//获取message节点中的内容
//message标签中的文本在dom中是message标签所对应的元素节点的子节点, firstChild获取当前节点上的第一个子节点
//通过以下方式就可以获得文本内容所对应的节点
var textNode = messageNode[0].firstChild;

//nodeValue可以返回文本节点的内容
var responseMessage = textNode.nodeValue;

//将数据显示在页面上
//通过dom方式找到div标签对应的元素节点
var divNode = document.getElementById("result");
//设置元素节点的内容
divNode.innerHTML = responseMessage;
}
}
}

...全文
216 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
neo_yoho 2008-07-20
  • 打赏
  • 举报
回复
var domObj = xmlhttp.responseXML;
alert看看domObj得到了什么内容啊

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧