AJAX(异步js和xml)(用于创建快速动态网页的技术)基础

发送ajax的使用方式: 原生 jQuery fetch axios

AJAX工作原理

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAU3RhciAgbnVv,size_19,color_FFFFFF,t_70,g_se,x_16

原传输,用xml代码

                (HTML与XML区别)

                HTML用来呈现数据。里全是预定义标签

                xml用来存储和传输数据。中没有预定义标签,全是自定义标签

现用JSON,相对于XML更简洁,数据转换更容易

 

AJAX特点

优点:

1.可以无需刷新页面与服务器端进行通信

2.允许你根据用户时间来更新部分页面内容

 

缺点:

1.没有浏览历史,不能回退

2.存在跨域问题(同源)

3.SEO(搜索引擎优化)不友好

HTTP协议(超文本传输协议)

详细规定了浏览器和万维网服务器之间相互通信的规则

 

创建XML HttpRequest对象

代码实现

var xmlhttp;

if (window.XMLHttpRequest) {

    // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码 

    xmlhttp=new XMLHttpRequest(); 
} else { 
    // IE6, IE5 浏览器执行代码 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
 }

如要向服务器发请求,我们使用XML HttpRequest对象的open()和send()方法

xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAU3RhciAgbnVv,size_20,color_FFFFFF,t_70,g_se,x_16

 

XHR请求

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAU3RhciAgbnVv,size_14,color_FFFFFF,t_70,g_se,x_16

 GET请求

(基础的GET请求)

xmlhttp.open("GET","/try/ajax/demo_get.php",true);
xmlhttp.send();

(通过GET发送信息是,要向URL中添加信息)

xmlhttp.open("GET","/try/ajax/demo_get2.php?fname=Henry&lname=Ford",true);
xmlhttp.send();

get请求实现案例

d541b52ba3d749fbb1fdb8e2c838dead.jpg 

 8718f7de079343d18358f2bfb77c03a5.jpg

 

POST请求

(基础的POST请求)

xmlhttp.open("POST","/try/ajax/demo_post.php",true);
xmlhttp.send();

如需像HTML表单那样POST数据,则要使用setRequestHeader()来添加HTTP头,然后在send()方法中规定想要发送的数据

xmlhttp.open("POST","/try/ajax/demo_post2.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("fname=Henry&lname=Ford");

:setRequestHeader()方法

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAU3RhciAgbnVv,size_20,color_FFFFFF,t_70,g_se,x_16

 

url  -服务器上的文件

open()方法的url参数是服务器上文件的地址

该文件可以是任何类型的文件,比如 .txt 和 .xml,或者服务器脚本文件,比如 .asp 和 .php (在传回响应之前,能够在服务器上执行任务)。

 

XMLHttpRequest 对象如果要用于 AJAX 的话,其 open() 方法的 async 参数必须设置为 true

(下图还没有很懂)

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAU3RhciAgbnVv,size_20,color_FFFFFF,t_70,g_se,x_16

onreadystatechange 事件

当请求被发送到服务器时,我们需要执行一些基于响应的任务。

每当 readyState 改变时,就会触发 onreadystatechange 事件。

readyState 属性存有 XMLHttpRequest 的状态信息。

XMLHttpRequest 对象的三个重要的属性

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAU3RhciAgbnVv,size_20,color_FFFFFF,t_70,g_se,x_16

 当 readyState 等于 4 且状态为 200 时,表示响应已就绪

xmlhttp.onreadystatechange=function()
{
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
        document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
}

 注: onreadystatechange 事件被触发 4 次(0 - 4), 分别是: 0-1、1-2、2-3、3-4,对应着 readyState 的每个变化。

 

回调函数

回调函数是一种以参数形式传递给另一个函数的函数。

如果您的网站上存在多个 AJAX 任务,那么您应该为创建 XMLHttpRequest 对象编写一个标准的函数,并为每个 AJAX 任务调用该函数。

该函数调用应该包含 URL 以及发生 onreadystatechange 事件时执行的任务(每次调用可能不尽相同):

function myFunction()
{
    loadXMLDoc("/try/ajax/ajax_info.txt",function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
        }
    });
}

 

 

 

 

 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAU3RhciAgbnVv,size_20,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAU3RhciAgbnVv,size_20,color_FFFFFF,t_70,g_se,x_16

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nuo__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值