AJAX中的Get和Post区别
1、Get
用Get方式可以传送简单数据,但大小一般限制在1KB下,数据追加到url中发送(http的header传送),也就是说,浏览器将各个表单字段元素及数据按照url参数的格式附加到请求行中的资源路径后面。注意,它是会被客户端的浏览器缓存起来,那么,别人就可以从浏览器的历史记录中,读取到此客户的数据,比如帐号和密码等。因此,在某些情况下,get方法会带来严重的安全性问题。
2、Post
用Post方式传送数据时,浏览器把各表单字段元素及其数据作为http消息的实体内容发送给web服务器,而不是作为url地址的参数进行传递。值得注意的是,使用post方式所传递的数据量要比使用get方式传递的数据量大得多。
总结:
Get:发送数据量小,安全性差。
Post:发送数据量大,安全性好。
*使用get传递参数需要使用encodeURIComponent方法处理参数;
例如:var url="Login.jsp?username=" + encodeURIComponent(username);
*使用post传递时
1、设置header的Context-Type为application/x-www-form-urlencode确保服务器知道实体中有参数变量,通常使用XmlHttpRequest对象中的setRequestHeader("Content-Type","application/x-www-urlencode;")。
例如:_xmlHttpRequest.setRequestHeader("Content-Type","application/x-www-urlencode");
2、参数格式为:名称=值&名称=值。
例如:var url=Login.jsp?userid=201394596&username=Tim&sex=male&age=23;
错误写法:var url=Login.jsp?userid=&username=Tim&sex=male&age=23;
3、参数在send()方法中发送。
例如:_xmlHttpRequest.send(url);//若为get方式,直接使用_xmlHttpRequest.send(null);
参考文章:
致谢:感谢rgcyc。