经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » AJAX » 查看文章
Ajax异步请求的五个步骤及实战案例
来源:jb51  时间:2022/8/1 15:08:56  对本文有异议

前言

AJAX(Asynchronous JavaScript and XML):是指一种创建交互式网页应用的网页开发技术,通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这就意味着可以在不重新加载整个网页的情况下,对网页的局部进行更新。

1.建立xmlHttpRequest异步对象

  1. const xhr=new XMLHttpRequest();

2.创建HTTP请求(设置请求方法和URL)

  1. //get方式
  2. xhr.open('GET',URL);
  3. //post方式发送数据,需要设置请求头
  4. xhr.open('POST',URL);
  5. xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

除了method和URL两个必选参数外还有三个可选参数:flag,name,password

flag:参数值为布尔类型,用于指定是否用异步方式。true表异步,false表同步,默认为true。

name:

3.发送数据

  1. //get不需要传递参数
  2. xhr.send(null);
  3. //post必须有参数
  4. xhr.send('a=100&b=200&c=300');

4.设置回调函数

  1. xhr.onreadystatechange = callback

5.在回调函数中对不同的响应状态进行处理

  1. function callback() {
  2. //判断响应状态码
  3. if(xhr.readyState===4){
  4. // 判断交互是否成功
  5. if(xhr.status>=200&&xhr.status<300){
  6. // console.log(xhr.status);//状态码
  7. // console.log(xhr.statusText);//状态字符串
  8. // console.log(xhr.getAllResponseHeaders());//所有响应头
  9. // console.log(xhr.response);//响应体
  10. // 获取服务器响应的数据
  11. result.innerHTML=xhr.response;
  12. }else{
  13. }
  14. }
  15. }

ajax中的readyState属性

  • 0:未初始化。尚未调用 open()方法。
  • 1:启动。已经调用 open()方法,但尚未调用 send()方法。
  • 2:发送。已经调用 send()方法,但尚未接收到响应。
  • 3:接收。已经接收到部分响应数据。
  • 4:完成。已经接收到全部响应数据,而且已经可以在客户端使用了。

只有在XMLHttpRequest对象完成了以上5个步骤之后,才可以获取从服务器端返回的数据。

ajax中的状态码(200-300则表示响应成功)

  • 400:请求参数错误
  • 401:无权限访问
  • 404:访问的资源不存在

案例实现

案例:获取天气信息

格式要求:使用HTML创建一个输入框,一个按钮,在输入框中输入文字后点击按钮,即可在下面打印未来15天的天气

输出要求:每个天气要求:城市名,温度,天气,风向,风力

API网站:(https://www.apishop.net/#/)

APIKEY:***************

使用 $.get( ) 获取:

  1. var text = $('#text')
  2. var btn = $('#button')
  3. var div = $('#div1')
  4. btn.click(function(){
  5. var city = text.val()
  6. var url = "https://api.apishop.net/common/weather/get15DaysWeatherByArea?apiKey=******="+ city
  7.  
  8. $.get(url, function(response){
  9. console.log(response)
  10. var list = response.result.dayList;
  11. console.log(list)
  12. for(var i = 0; i < list.length; i++){
  13. div.append("<ul>")
  14. div.append("<li>" + list[i].area + "</li>")
  15. div.append("<li>" + list[i].day_air_temperature + "</li>")
  16. div.append("<li>" + list[i].day_weather + "</li>")
  17. div.append("<li>" + list[i].day_wind_direction + "</li>")
  18. div.append("<li>" + list[i].day_wind_power + "</li>")
  19. div.append("</ul>")
  20. }
  21.  
  22. }, "JSON")
  23. })

使用 $.post( ) 获取:

  1. var text = $('#text')
  2. var btn = $('#button')
  3. var div = $('#div1')
  4. btn.click(function(){
  5. var url = "https://api.apishop.net/common/weather/get15DaysWeatherByArea?apiKey=******&area="
  6.  
  7. $.post(url,{
  8. // 传入必须的参数
  9. area:text.val()
  10. }, function(response){
  11. console.log(response)
  12. var list = response.result.dayList;
  13. console.log(list)
  14. for(var i = 0; i < list.length; i++){
  15. div.append("<ul>")
  16. div.append("<li>" + list[i].area + "</li>")
  17. div.append("<li>" + list[i].day_air_temperature + "</li>")
  18. div.append("<li>" + list[i].day_weather + "</li>")
  19. div.append("<li>" + list[i].day_wind_direction + "</li>")
  20. div.append("<li>" + list[i].day_wind_power + "</li>")
  21. div.append("</ul>")
  22. }
  23.  
  24. }, "JSON")
  25. })

结果截图:

总结

到此这篇关于Ajax异步请求的五个步骤及实战案例的文章就介绍到这了,更多相关Ajax异步请求步骤内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号