Logo

郎哥编程

Ajax技术

2020-12-25 174

Ajax是一种技术组合,利用Ajax可以快速实现客户端与服务端的通信,而无需了解通信的底层技术,如XMLHttpReques,XML等技术,Ajax对这些技术进行了封装。

jQuery提供了对Ajax技术很好的支持,使用者无须关心Ajax 的核心对象或实现机制,只需要使用ajax()、get()或post()方法,就能很方便地完成客户端与服务端的交互。

1、  ajax函数

jQuery提供的ajax()函数可以完成客户端与服务端异步通讯的所有功能,该函数提供Ajax详细的配置入口,可以对Ajax 进行更为深入的控制。

ajax()函数有两种使用方法:

用法1:

jQuery.ajax(ConfigObject)

参数ConfigObject是JS对象,该对象的属性为Ajax的配置项。

用法2:

jQuery.ajax(url,ConfigObject)

用法2是用法1的变体,它只是将ConfigObject对象的url属性提取出来作为一个独立的参数,该参数为发送请求的url。

常用的ConfigObject对象属性如下表所示:

20.png

注释(1)

async用于配置请求是同步还是异步。同步请求是当前发出请求后,浏览器什么都不能做,必须得等到请求完成返回数据之后,才会执行后续的代码。异步请求是当前发出请求后,浏览器可以继续做任何事,该请求并不会影响页面的加载与用户的操作,相当于是在两条线上,各走各的,互不影响。

async默认设置为true,是异步请求。若需要发送同步请求,需要将async设置为false。

注释(2)

data为客户端发送到服务端的数据,类型为JS对象或字符串。若请求类型是GET,data会自动添加到url之后,作为url的参数。data一般为JS对象,例如:

{foo1:"bar1",foo2:"bar2"}

注释(3)

dataType用于配置服务端返回的数据类型,可用的类型如下:

xml:返回XML数据。

html:返回HTML数据。

script:返回JavaScript代码。

json:返回JSON数据。

text:返回纯文本内容。

若dataType没有设置,默认返回数据类型是text。

注释(4)

success是回调函数,该函数有两个参数:一个参数是服务端返回的数据,数据类型由dataType指定;一个参数是描述状态的字符串。

例如下面的函数可以作为success回调函数:

function(data, status){
  //data可能是xmlDoc、jsonObj、html、text等等
  JS语句
}

案例4: 获取天气预报(案例代码见unit5\case4.html):

案例使用高德地图的天气预报接口查询当日某城市天气,使用API前您需先申请Key,若无高德地图API账号需要先申请账号.extension代表气象类型,若extension=base:返回实况天气,extension=all:返回预报天气。

接口调用描述如下:

接口地址:
https://restapi.amap.com/v3/weather/weatherInfo

参数:key,在高德地图申请的账号

参数:city,城市名称,如北京

参数:extensions,气象类型,若值为extension,返回city指定城市的实况天气,若值为all,返回指定城市的预报天气。

接口返回数据为JSON数据:
{
      "status": "1",
      "count": "1",
      "info": "OK",
      "infocode": "10000",
      "lives": [{
             "province": "北京",
             "city": "北京市",
             "adcode": "110000",
             "weather": "晴",
             "temperature": "0",
             "winddirection": "西南",
             "windpower": "4",
             "humidity": "19",
             "reporttime": "2020-12-15 15:30:42"
      }]
}

案例代码:

<html>
<head>
<title>JavaScript开发案例</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="script/jquery-3.5.1.min.js" type="text/javascript" ></script>
<script type="text/javascript">
         
  function get_weather(){
                    
   $.ajax({
    // 请求方式                 
    type:"POST",
    // 请求URL
      url:"https://restapi.amap.com/v3/weather/weatherInfo", 
    data:{
      key:"5d2d3e6c0d5188bec134fc4fc1b139e0",
      city:"北京",
      extensions:"base"
    },
    // 同步模式
    async:false,
     // 返回JSON数据
    dataType: "json",
    // 错误处理
    error:function(){
      alert("请求出错了。");
    },
   success : function(data) { 
   $("#id_date").text("日期:" + data.lives[0].reporttime);
   $("#id_weather").text("天气:" + data.lives[0].weather);
   $("#id_temperature").text("温度:" + data.lives[0].temperature);
   $("#id_winddirection").text("风力:" + data.lives[0].winddirection + "风" + data.lives[0].windpower + "级");
  } 
 }); 
 }
 
</script>
</head>
<body>
<h3>北京市天气预报</h3>
  <p id="id_date"><p>
  <p id="id_weather"><p>
  <p id="id_temperature"><p>
  <p id="id_winddirection"><p>
   <p><input type="button" value="获取天气预报" onclick="get_weather()"/></p>
</boyd>
<html>

2、  get函数

get函数以GET方式向服务端发送ajax请求,get函数使用方法如下:

$.get(url, [data], [callback], [dataType])

参数说明如下表所示:

21.png

案例5: 使用get函数获取天气预报(案例代码见unit5\case5.html)。

<html>
<head>
<title>JavaScript开发案例</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="script/jquery-3.5.1.min.js" type="text/javascript" ></script>
<script type="text/javascript">
         
function get_weather(){
                    
  $.get(
   // 请求URL
    "https://restapi.amap.com/v3/weather/weatherInfo",
   // 传递到服务器的参数
               {
     key:"5d2d3e6c0d5188bec134fc4fc1b139e0",
     city:"北京",
     extensions:"base"
   },
   function(data) { 
     $("#id_date").text("日期:" + data.lives[0].reporttime);
      $("#id_weather").text("天气:" + data.lives[0].weather);
     $("#id_temperature").text("温度:" + data.lives[0].temperature);
     $("#id_winddirection").text("风力:" + data.lives[0].winddirection + "风" + data.lives[0].windpower + "级");
   },
     "json"                  
 )
 }
 
</script>
</head>
<body>
  <h3>北京市天气预报</h3>
  <p id="id_date"><p>
  <p id="id_weather"><p>
  <p id="id_temperature"><p>
  <p id="id_winddirection"><p>
  <p><input type="button" value="获取天气预报" onclick="get_weather()"/></p>
</boyd>

3、  post函数

post函数以POST方式向服务端发送ajax请求,post函数的定义与get函数相同,下面的代码将调用天气预报的API接口获取天气信息。

function get_weather(){
                    
 $.post(
   // 请求URL
  "https://restapi.amap.com/v3/weather/weatherInfo",
   // 传递到服务器的参数
   {
     key:"5d2d3e6c0d5188bec134fc4fc1b139e0",
      city:"北京",
     extensions:"base"
   },
   function(data) { 
     $("#id_date").text("日期:" + data.lives[0].reporttime);
     $("#id_weather").text("天气:" + data.lives[0].weather);
     $("#id_temperature").text("温度:" + data.lives[0].temperature);
     $("#id_winddirection").text("风力:" + data.lives[0].winddirection + "风" + data.lives[0].windpower + "级");
   },
   "json"                  
   )
}

4、  getJSON函数

若确定服务端返回JSON数据,可以使用getJSON函数,使用该函数时,不必再传入dataType参数。getJSON函数使用方法如下:

$.getJSON (url, [data], [callback])

getJSON函数的定义和get、post函数相同,在已经确定服务器返回JSON数据的情况下,不必再传入dataType参数。

案例代码参见get函数。

代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论