Last updated on August 3, 2025 pm
Ajax 并不是一门编程语言,而是一种前后端交互的技术
什么是 Ajax
通过在后台与服务器进行少量数据交换,Ajax 可以使用网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
Ajax 实例
1 2 3 4 5 6
| <script> function loadXMlDoc(){ } </script>
|
XMLHttpRequest 对象
所有现代浏览器均支持 XMLHttpRequest 对象
XMLHttpRequest 用于在后台与服务器进行数据交换
创建 XMLHttpRequest 对象
1
| var xmlhttp = new XMLHttpRequest();
|
Ajax 向服务器发出请求
1 2
| xmlhttp.open('GET','test.php',true); xmlhttp.send();
|
方法
- open(method,url,async)
- method:请求的类型 GET 或 POST
- url : 文件在服务器上的位置
- async:true(异步)或 false (同步)
- send(string)
GET 请求
1 2
| xmlhttp.open("GET","test.php?id=1",true); xmlhttp.send();
|
POST 请求
1 2 3
| xmlhttp.open("POST","test.php",true); xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xmlhttp.send("name=lixiney&password=hello");
|
- setRequestHeader(header,value)
Async=true
当 async = true 时
1 2 3 4 5 6 7 8 9 10 11 12
| <script> function loadXMLDoc(){ var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function(){ if(xmlhttp.readyState == 4 && xmlhttp.status == 200){ document.getElementById("myDiv").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","test.php",true); xmlhttp.send(); } </script>
|
Ajax 服务器的响应
服务器响应
Ajax - onreadystatechange 事件
当请求被发送到服务器时,我们需要执行基于响应的任务。
每当 readyState 改变时,就会出发 onreadystatechange 事件。
- readyState 属性存有 XMLHttpRequest 的状态信息
- 0 : 请求未初始化
- 1:服务器连接已建立
- 2:请求已接收
- 3:请求处理中
- 4:请求已完成,且响应就绪
- status
Ajax - Json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <script> function putJson(){ var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function(){ if(xmlhttp.status == 200 && xmlhttp.readyState ==4){ var myArr = JSON.parse(this.responseText); myFunc(myArr); } } xmlhttp.open("GET","test.json",true); xmlhttp.setRequestHeader("Content-type","application/json;charset=utf-8"); xmlhttp.send(); } function myFunc(arr){ var out = ""; var i; for(i=0;i<arr.length;i++){ out += 'a< href="'+arr[i].url+'">'+arr[i].title+'</a><br>'; } document.getElementById('myDiv').innerHTML=out; } </script>
|
test.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| [ { "title": "JavaScript 教程", "url": "https://www.runoob.com/js/" }, { "title": "HTML 教程", "url": "https://www.runoob.com/html/" }, { "title": "CSS 教程", "url": "https://www.runoob.com/css/" } ]
|