Ajax异步请求的五个步骤及实战案例

目录
  • 前言
  • 1.建立xmlHttpRequest异步对象
  • 2.创建HTTP请求(设置请求方法和URL)
  • 3.发送数据
  • 4.设置回调函数
  • 5.在回调函数中对不同的响应状态进行处理
  • 案例实现
  • 总结

前言

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

1.建立xmlHttpRequest异步对象

 const xhr=new XMLHttpRequest();

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

//get方式
xhr.open('GET',URL);

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

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

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

name:

3.发送数据

//get不需要传递参数
xhr.send(null);

//post必须有参数
xhr.send('a=100&b=200&c=300');

4.设置回调函数

xhr.onreadystatechange = callback;

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

function callback() {
     //判断响应状态码
     if(xhr.readyState===4){
        // 判断交互是否成功
        if(xhr.status>=200&&xhr.status<300){
             // console.log(xhr.status);//状态码
             // console.log(xhr.statusText);//状态字符串
             // console.log(xhr.getAllResponseHeaders());//所有响应头
             // console.log(xhr.response);//响应体

             // 获取服务器响应的数据
             result.innerHTML=xhr.response;
        }else{

        }
    }
}

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( ) 获取:

var text = $('#text')
var btn = $('#button')
var div = $('#div1')
btn.click(function(){
    var city = text.val()
    var url = "https://api.apishop.net/common/weather/get15DaysWeatherByArea?apiKey=******="+ city

    $.get(url, function(response){
        console.log(response)
        var list = response.result.dayList;
        console.log(list)
        for(var i = 0; i < list.length; i++){
            div.append("<ul>")
            div.append("<li>" + list[i].area + "</li>")
            div.append("<li>" + list[i].day_air_temperature + "</li>")
            div.append("<li>" + list[i].day_weather + "</li>")
            div.append("<li>" + list[i].day_wind_direction + "</li>")
            div.append("<li>" + list[i].day_wind_power + "</li>")
            div.append("</ul>")
        }

    }, "JSON")
})

使用 $.post( ) 获取:

var text = $('#text')
var btn = $('#button')
var div = $('#div1')
btn.click(function(){
                var url = "https://api.apishop.net/common/weather/get15DaysWeatherByArea?apiKey=******&area="

                $.post(url,{
                    // 传入必须的参数
                    area:text.val()
                }, function(response){
                    console.log(response)
                    var list = response.result.dayList;
                    console.log(list)
                    for(var i = 0; i < list.length; i++){
                        div.append("<ul>")
                        div.append("<li>" + list[i].area + "</li>")
                        div.append("<li>" + list[i].day_air_temperature + "</li>")
                        div.append("<li>" + list[i].day_weather + "</li>")
                        div.append("<li>" + list[i].day_wind_direction + "</li>")
                        div.append("<li>" + list[i].day_wind_power + "</li>")
                        div.append("</ul>")
                    }

                }, "JSON")
            })

结果截图:

总结

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

(0)

相关推荐

  • 解决ajax异步请求返回的是字符串问题

    1.返回结果差异 js获取后打印res.code无结果.因为返回数据格式不正确. php文件添加header头: header('Content-Type:application/json;'); 或者.j s 添加 contentType: "application/json; charset=utf-8", dataType: "json", $.ajax({ url:'../data/insert_category.php?article_type=' + v

  • 浅谈js的ajax的异步和同步请求的问题

    先来看以下代码: var flag=true; var index=0; $.ajax({ url: "http://www.jb51.net/", success: function(data){ flag=false; } }); while(flag){ index++; } alert(index); 请问最后alert的index的结果是多少? 可能有人会说0呗.实际上却没那么简单.大家可以自己试试看.可以看到最终程序进入了一个死循环!怎么会这样呢! 我们在看一段代码: va

  • ajax异步请求详解

    做前端开发的朋友对于ajax异步更新一定印象深刻,作为刚入坑的小白,今天就和大家一起聊聊关于ajax异步请求的那点事.既然是ajax就少不了jQuery的知识,推荐大家访问www.w3school.com学习,教程完善,适合初学者快速入门. jQuery的引用,可以通过下载js文件导入,或通过外部导入 <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js" type="text/javascript"

  • 原生JavaScript实现Ajax异步请求

    在前端页面开发的过程中,经常使用到Ajax请求,异步提交表单数据,或者异步刷新页面. 一般来说,使用Jquery中的$.ajax,$.post,$.getJSON,非常方便,但是有的时候,我们只需要ajax功能,这样引入Jquery比较不划算. 所以接下来便用原生JavaScrpit实现一个简单的Ajax请求,并说明ajax请求中的跨域访问问题,以及多个ajax请求的数据同步问题. JavaScript实现Ajax异步请求 简单的ajax请求实现 Ajax请求的原理是创建一个XMLHttpReq

  • Ajax异步请求的五个步骤及实战案例

    目录 前言 1.建立xmlHttpRequest异步对象 2.创建HTTP请求(设置请求方法和URL) 3.发送数据 4.设置回调函数 5.在回调函数中对不同的响应状态进行处理 案例实现 总结 前言 AJAX(Asynchronous JavaScript and XML):是指一种创建交互式网页应用的网页开发技术,通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这就意味着可以在不重新加载整个网页的情况下,对网页的局部进行更新. 1.建立xmlHttpRequest异步对象

  • SpringMVC环境下实现的Ajax异步请求JSON格式数据

    一 环境搭建 首先是常规的spring mvc环境搭建,不用多说,需要注意的是,这里需要引入jackson相关jar包,然后在spring配置文件"springmvc-servlet.xml"中添加json解析相关配置,我这里的完整代码如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schem

  • Ajax异步请求JSon数据(图文详解)

    上一篇讲了Ajax请求数据text类型,text和html都是处理比较简答的数据,而在编程过程中使用Ajax调用数据的时候,难免要进行逻辑的处理,接受的数据也变的复杂比如数组类型的数据,这时候就需要使用JSON数据类型进行处理,今天就说说,JSON数据请求过程中的一些细节: 我们友情提醒本文所需工具和原料如下: wamp或lamp环境.jquery.js.编辑器 具体方法/步骤请看下面: 1.创建基本的文件结构json_ajax.html和json_ajax.php,下载jquery.js,如图

  • Ajax异步请求技术实例讲解

    AJAX的全称是Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX不是新的编程语言,而是一种使用现有标准的新方法.ajax是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下. ajax是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. ajax是一种用于创建快速动态网页的技术.通过在后台与服务器进行少量数据交换.ajax可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分

  • jquery的ajax异步请求接收返回json数据实例

    jquery的ajax异步请求接收返回json数据方法设置简单,一个是服务器处理程序是返回json数据,另一种就是ajax发送设置的datatype设置为jsonp格式数据或json格式都可以. 代码示例如下: 复制代码 代码如下: $('#send').click(function () {     $.ajax({         type : "GET",         url : "a.php",         dataType : "json

  • Vue form 表单提交+ajax异步请求+分页效果

    废话不多说了,直接给大家贴代码了,具体代码如下所示: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <meta charset="UTF-

  • 浅谈Jquery中Ajax异步请求中的async参数的作用

    之前不知道这个参数的作用,上网找了前辈的博客,在此收录到自己的博客,希望能帮到更多的朋友: test.html <a href="javascript:void(0)" onmouseover="testAsync()"> asy.js function testAsync{ var temp; $.ajax({ async: false, type : "GET", url : 'tet.php', complete: functi

  • jquery请求servlet实现ajax异步请求的示例

    ajax可以发送异步请求实现无刷新效果,但是使用javascript比较麻烦,就query提供了一些封装的方法 ,可以使得操作更为简单: $.ajax()方法: function sendRequest() { $.ajax({ url: "Hello", type: "GET", dataType: "txt", data: "name=zhangsan", complete: function(result){ alert

随机推荐