码迷,mamicode.com
首页 > 其他好文 > 详细

[ajax 学习笔记] ajax 的服务器响应

时间:2014-08-01 19:52:13      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   io   数据   2014   

在上一篇[ajax 学习笔记] ajax初试中,简单了解了一下ajax。

我是参考AJAX详解.chm学习的,资源已上传。参考链接:Ajax 专题

今天又学习了ajax中关于服务器响应的一些知识。

ajax中服务器的响应是通过响应函数将服务器返回的数据呈现到页面的。服务器的响应体现在服务器响应回调函数中。

在上一篇的例子中,响应函数为:

function updatePage(){
	if(xmlHttp.readyState == 4){   //http就绪状态
		if(xmlHttp.status == 200){    //判断http状态代码
			var response = xmlHttp.responseText;    
			document.getElementById("ajax-result").value = response;
		}else if(xmlHttp.status == 404){
			alert("Request url does not exist!");
		}else{
			alert("ERROR:status code is" + xmlHttp.status);
		}
	}
}

关于这个响应函数要说明以下几点:

1.xmlHttp.readyState

        这个例子中xmlHttp是XMLHttpRequest对象的一个实例。该对象有一个readyState属性,表示就绪状态。

        就绪状态有五种,分别为:

               > 0:请求未初始化(还没有调用open())

              > 1:请求已经建立,但是还没有发送(还没有调用send())

              > 2:请求已发送,正在处理中(通常现在可以从响应中获取内容头)

              > 3:请求正在处理中;通常响应中已有部分数据可用了,但是服务器还没有完成相应的生成

              > 4:响应已完成;表示可以获取并使用服务器的响应了

        由这几种状态可以知道,当XMLHttpRequest对象的readyState对象为4时,表示服务器已经完成了对请求的响应,用户才可以对服务器响应的数据进行操作,于是回调函数中会出现判断xmlHttp为4的代码。

试一试:如果你在回应函数中这么写:

			function updatePage(){
						alert("readyState=" + xmlHttp.readyState);
			}
你会发现浏览器会弹出2~4次警告,告诉你当前的就绪状态。这是因为每次继续状态改变的时候都会调用该回调函数。

2.xmlHttp.status

        XMLHttpRequest有一个status属性用来表示HTTP的状态码。(您访问网页的时候一定遇到过"404 not found"字样的情况吧,这里的状态码就是404这样的数字,用来表示服务器HTTP响应状态,404呢表示请求失败,200表示请求成功,如果查看状态码,你可以用web开发者工具看一下Network一栏)

        有兴趣的可以多了解一下HTTP状态码的信息。

        在回调函数中对HTTP状态码详加判断能够增加程序的健壮性,同时使能够帮助用户加速找到程序发生的问题。

3.ajax和XML

        在上面回调函数例子中用到了XMLHttpRequest的responseText属性,它表示服务器响应返回的文本信息。

        这里可能有一个认识的误区:从名字上看,XMLHttpRequest的数据传送应该是XML格式的。其实不然。ajax的数据传送可以是文本的(像上面例子中用get方式进行名/值传送),也可以传送XML文档(用到XMLHttpRequest的responsXML属性)。

        就web应用程序客户端而言,用文本传送和XML传送数据内容都是相同的,在内容相同的基础上,XML要比普通文本浪费了空间,在传送时浪费了时间,所以对于客户端来说,大多数情况下,用普通文本传送数据更好。

        为什么说使用XML增加了处理时间?

                用XML传送数据时:将文本包装成 XML;发送额外信息(要注意我没有包含任何包围元素、XML 头或者可能出现在实际请求中的其他任何内容);让服务器解析 XML、生成响应、用 XML 包装响应,并将它发送回网页;让网页解析响应,最后使用它。

        但是有些情况下还是要用XML的。比如用get方式传送名/值对时,假如数据量很大,get传送方式有一定的长度限制,这是可以考虑用XML来传送。

        就web应用程序服务器端而言,向服务器端发送XML情况大致分为两类:

                1> 服务器仅接受XML请求

                2> 您正在调用一个仅接受XML或SOAP请求的远程API。(可以看成是上一种情况的特例)

        如果要发送XML数据,需要两个步骤来保证XML的数据能够被正确接收:

                1> 保证向其发送 XML 的脚本能够接受 XML 数据格式。

                2> 保证脚本认可发送数据所采用的特定XML格式和结构。

[ajax 学习笔记] ajax 的服务器响应,布布扣,bubuko.com

[ajax 学习笔记] ajax 的服务器响应

标签:style   blog   http   color   使用   io   数据   2014   

原文地址:http://blog.csdn.net/monkey7777/article/details/38337693

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!