AJAX

本文介绍了AJAX的核心概念,包括异步JavaScript和XML的含义,以及如何通过XMLHttpRequest对象实现AJAX请求。同时,讨论了AJAX的优势,如无刷新页面通信和事件驱动的内容更新,以及其缺点,如缺乏浏览历史。文章还深入探讨了跨域问题,解释了同源策略,并提供了解决方案,包括后端设置响应头和JSONP技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

认识AJAX

AJAX

全称为Asynchronous Javascript and XML 就是异步的js和xml
允许浏览器与服务器进行通讯而无需刷新当前页面的技术都被叫做AJAX
浏览器与服务器交互且不用刷新整个页面的方法

XMLHttpRequest:

该对象是对JavaScript的一个扩展,可 使网页与服务器进行通信。是创建Ajax应用的最佳选择。
实际上通常把Ajax当成XMLHttpRequest对象的代名词

AJAX的优点

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

  2. 允许通过事件来更新页面内容

AJAX的缺点

没有浏览历史,不能回退

搭建AJAX库

1.创建AJAX

new XMLHttpRequest();

2.连接到服务器

AJAX.open(方法,要读的文件,true(代表异步))

3.发送请求(告诉服务器需要什么)

AJAX.send()

4.接受返回值

onreadystatechange
readystate://浏览器和服务器进行到哪一步了
readystate=4代表交互已完成
0代表该没有调用open方法
1代表已调用send,正在发送请求
2代表send()方法完成已收到全部响应内容
3代表正在解析响应内容
4代表响应内容解析完成,可以在客户端使用了
status://HTTP状态码
200代表成功
responseText请求的文本内容


另外就是前后端交互的跨域问题了,这个问题可以通过很多种方式来解决


首先说什么是跨域:

跨域:

浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域

为什么会有跨域:

在前后端分离的模式下,前后端的域名是不一致的,此时就会发生跨域访问问题。在请求的过程中我们要想回去数据一般都是post/get请求,所以…跨域问题出现
跨域问题来源于JavaScript的同源策略,即只有 协议+主机名+端口号(如存在)相同,则允许相互访问。也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源。跨域问题是针对JS和ajax的,html本身没有跨域问题,比如a标签、script标签、甚至form标签(可以直接跨域发送数据并接收数据)等

同源策略的定义:

同源策略(Same-Origin Policy)最早由NETscape公司提出,是一种浏览器的安全策略。
同源:协议,域名,端口号必须完全相同
违背同源策略就是跨域

跨域的解决方案:

后端设置响应头:

以node.js为例

app.all('/json-server',(request,response)=>{
    //设置允许跨域
    response.setHeader('Access-Control-Allow-Origin','*');
    
    const data={
        name: 'wxy'
    };
    let str= JSON.stringify(data);
    //设置响应
    response.send(str);
    

}); 

app.all('/jquery-server',(request,response)=>{
    //设置允许跨域
    response.setHeader('Access-Control-Allow-Origin','*');
    const data={name:'wxy',}
    //设置响应
    // response.send('HELLO JQuery AJAX');
    response.send(JSON.stringify(data));

}); 


app.all('/axios-server',(request,response)=>{
    //设置允许跨域
    response.setHeader('Access-Control-Allow-Origin','*');
    const data={name:'wxy',}
    //设置响应
    // response.send('HELLO JQuery AJAX');
    response.send(JSON.stringify(data));

}); 

通过JSONP:

JSONP(JSON with Padding),是一个非官方的跨域解决方案,纯粹凭借程序员的聪明才智开发出来的,只支持get请求
JSONP怎么工作的?
在网页有一些标签天生具有跨域能力,比如: img link iframe script。
JSONP就是利用script标签的跨域能力来发送请求的。

也就是说通过js文件来绕过同源策略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值