ajax创建xml对象以及get post请求
一.XMLHttpRequest 是 AJAX 的基础
1.创建 XMLHttpRequest 对象
所有现代浏览器(IE7+、Firefox、Chrome、Safari 以及 Opera)均内建 XMLHttpRequest 对象。
variable=new XMLHttpRequest();
老版本
variable=new ActiveXObject("Microsoft.XMLHTTP");
2.应用
为了应对所有的现代浏览器,包括 IE5 和 IE6,请检查浏览器是否支持 XMLHttpRequest 对象。如果支持,则创建 XMLHttpRequest 对象。如果不支持,则创建 ActiveXObject :
var xmlhttp; if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }
二.XMLHttpRequest 对象用于和服务器交换数据
1.一个简单的 GET 请求:
xmlhttp.open("GET","demo_get.asp",true); xmlhttp.send();
在上面的例子中,您可能得到的是缓存的结果。
为了避免这种情况,请向 URL 添加一个唯一的 ID:
xmlhttp.open("GET","demo_get.asp?t=" +Math.random()
,true); xmlhttp.send()
原因:
例如你的文件URL是:flie/xxx.txt
第一次Ajax请求这个文件,浏览器可能会将这个文件缓存在本地,下次再打开这个文件浏览器就可以直接打开本地文件,无需重新通过网络再次获取。
但是,浏览器有可能会好心办了坏事,因为你修改了服务器的flie/xxx.txt文件,但是浏览器不知道,它还是会打开本地缓存的文件,这就会造成一些BUG。
为了防止出现这种问题,在URL上加一个参数“t=随机数”,浏览数会认为两次打开的是不同的东西,第二次Ajax就不会使用第一次Ajax的缓存。
至于“这为何能正常运行呢”?
在URL上加上参数,同样还是打开这个文件,当然可以正常运行。
flie/xxx.txt?t=0.1234567890123456,这个URL同样还是打开文件flie/xxx.txt。
2.一个简单 POST 请求:
xmlhttp.open("POST","demo_post.asp",true); xmlhttp.send();
如果需要像 HTML 表单那样 POST 数据,请使用 setRequestHeader() 来添加 HTTP 头。然后在 send() 方法中规定您希望发送的数据:
xmlhttp.open("POST","ajax_test.asp",true); xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xmlhttp.send("fname=Bill&lname=Gates");