XMLHttpRequest五步使用注意事项
1、不同浏览器中XMLHttpRequest对象建立的方式不同
2、设置回调函数时,不要在函数名后面加 括号。加括号表示将回调函数的返回值注册给onreadystatechange属性。
3、open方法最多可以有五个参数,其中头三个参数是必须的。并注意GET方式和POST方式在设置send方式的参数不同。
4、回调函数中,最好判断readyState和status的两个if条件,分开来写。readyState的判断条件位于外层,status位于内层。
5、当服务器没有正确返回XML数据时,在js中使用responseXML的方式获取返回的xml数据对应得DOM对象时,FireFox和IE的结果是有差别的。
下面是本示例的完整代码:
- <script type="text/javascript">
- var xmlhttp;
- function submit(){
- //1.创建XMLHttpRequest对象
- if(window.XMLHttpRequest){
- //IE7,IE8,FireFox,Mozilllar,Safari,Opera
- //alert("IE7,IE8,FireFox,Mozilllar,Safari,Opera");
- xmlhttp=new XMLHttpRequest();
- if(xmlhttp.overrideMimeType){
- xmlhttp.overrideMimeType("text/xml");
- }
- }else if(window.ActiveXObject){
- //IE6.IE5,IE5.5
- //alert("IE6.IE5,IE5.5");
- /* var activexName=["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.5.0",
- "MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML.2.XMLHTTP",
- "Microsoft.XMLHTTP"];*/
- var activexName=["MSXML.2.XMLHTTP","Microsoft.XMLHTTP"];
- for (var i = 0; i < activexName.length; i++) {
- try {
- xmlhttp=new ActiveXObject(activexName[i]);
- break;
- } catch (e) {
- }
- }
- }
- if(xmlhttp == undefined || xmlhttp == null){
- alert("当前浏览器不支持创建XMLHttpRequest对象,请更换浏览器");
- return;
- }
- //2.注册回调方法
- xmlhttp.onreadystatechange=callBack;
- //错误的写法,加括号说明将返回值给了onreadystatechange,从服务器端返回的数据
- //不能执行数据解析和更新的操作
- // xmlhttp.onreadystatechange=callback();
- // 记忆一个固定用法,获取文本框中用户输入的内容
- var userName=document.getElementById("UserName").value;
- userName=encodeURI(encodeURI(userName));
- }
- //GET方式交互
- //3.设置和服务器端交互的相互参数
- xmlhttp.open("GET","AJAX?name=" + userName,true);
- //4.设置向服务器端发送的数据,启动和服务器端的交互
- xmlhttp.send(null);
- //POST方式交互
- //3.设置和服务器端交互的相互参数
- xmlhttp.open("POST","AJAX",true);
- //POST方式交互所需要增加的代码
- xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
- //4.设置向服务器端发送的数据,启动和服务器端的交互
- xmlhttp.send("name=" + userName);
- }
- function callBack(){
- //5.判断和服务器端的交互是否完成,还要判断服务器端是否正确返回了数据
- if(xmlhttp.readyState == 4){
- //表示和服务器端的交互已经完成
- if(xmlhttp.status == 200){
- //表示服务器的响应代码是200,正确的返回了数据
- //纯文本数据的接受方法
- var message=xmlhttp.responseText;
- //xml数据对应的DOM对象的接受方法
- //使用的前提是,服务器端需要设置content-type为text/xml
- //var domXml=xmlhttp.responseXML;
- //记忆向div标签中填充文本内容的方法
- var div =document.getElementById("message");
- div.innerHTML=message;
- //alert(xmlhttp.responseXML.documentElement);
- //判断返回的xml数据是否正确
- var rootElement =xmlhttp.responseXML.documentElement;
- if(rootElement == null || rootElement.nodeName !=""){
- }else{
- //数据正确返回,可以进行相关处理
- }
- }
- }
- }
- </script>
本文详细介绍了XMLHttpRequest的使用步骤及五项关键注意事项,包括对象创建、回调函数设置、参数配置、交互流程和服务器响应处理。通过示例代码演示了GET和POST方式的交互过程,并强调了对readyState和status的正确判断方法,以及不同浏览器环境下对象创建的差异。此外,还特别提到了在服务器未正确返回XML数据时,Firefox与IE在解析XML响应上的差异。
3531

被折叠的 条评论
为什么被折叠?



