GET和POST

Ajax与Comet

1. Ajax Asynchronous Javascript+xml :能够向服务器请求额外的数据而无需卸载页面。

Ajax技术的核心是XMLHttpRequest 对象(简称XHR),由微软引入。

Get请求:

最常见的请求类型,最常用于向服务器查询某些信息。必要时,可以将查询字符串参数追加到URL的末尾,以便将信息发送给服务器。使用Get请求经查会发生一个错误,就是查询字符串的格式有问题。查询字符串中每个参数的名称和值都必须使用encodeURIComponent()进行编码,然后才能放到URL的末尾,而且所有的名-值对儿都必须由和号(&)分隔,如下所有:

xhr.open("get","example.php?name1=value1&name2=value2",true);

POST请求:

通常用于向服务器发送应该被保存的数据。POST请求应该把数据作为请求的主体提交,而Get请求传统上不是这样。POST请求的主体可以包含非常多的数据,而且格式不限。

默认情况下,服务器对POST请求和提交Web表单的请求并不会一视同仁。因此,服务器必须有程序来读取发送过来的原始数据,并从中解析出有用的部分。不过,我们可以使用XHR来模仿表单提交。首先将content-type头部信息设置为application/x-www-form-urlencoded,也就是表单提交时的内容类型,其次是以适当的格式创建一个字符串。如果不设置content-Type头部信息,那么发送给服务器的数据就不会出现在$_POST这个全局变量中。这时候,要访问同样的数据,就必须借助$HTTP_RAW_POST_DATA.

与GET请求相比,POST请求消耗的资源会更多一些。从性能角度看,以发送相同的数据计,GET请求的速度最多可以达到POST请求的两倍。

XMLHttpRequest2 级定义了FormData类型。FormData为序列化表单以及创建与表单格式相同的数据(用于通过XHR传输)提供了便利。下面的代码创建了一个FormData对象,并向其中添加了一些数据。

var data=new FormData();

data.append("name","Nicholas");

使用FormData的方便之处体现在不必明确地在XHR对象上设置请求头部。XHR对象能够是被传入的数据类型是FormData的实例,并配置适当的头部信息。

 

posted @ 2015-09-16 17:54  息晴海  阅读(165)  评论(0编辑  收藏  举报