2022-04-15

AJAX

1.概念

AJAX 全称为Asynchronous Javascript And XML,就是异步的 JS 和 XML。

通过AJAX可以在浏览器中向服务器发送异步请求,最大的优势:无刷新获取数据。

AJAX 不是新的编程语言,而是一门技术。

简单来说:ajax是一门技术,不是一门语言,可以在不用加载整个网页的情况下,就可以对局部网页做刷新,刷新的时候,无刷新操作

2.特点

优点:

1.可以无刷新页面与后端通信

2.可以根据用户操作进行局部的数据更新

缺点:

1.不会有历史记录,不能够回退到上一个页面

2.会出现跨域问题

3.SEQ不友好,也就是搜索引擎对ajax多的页面,不容易搜到

3.使用

原生js中使用

1.创建XMLHttpRequest对象

2.设置请求信息,open方法

格式:XMLHttpRequest对象.open("请求方法","请求地址?参数名=参数值&参数名=参数值",)  

注意:post方式不设置参数

3.发送请求,send()方法

格式:XMLHttpRequest对象.send("参数名=参数值&参数名=参数值")

注意:get方式不需要在这里传递参数

4.客户端接收响应数据,onreadystatechange

格式:XMLHttpRequest对象.onreadystatechange = function(){

}

注意:ajax请求状态

0:请求未初始化

1:与服务器建立连接

2:请求发送

3:请求接收并处理

4:请求处理完成,响应就绪

Jquery中ajax使用

get请求

格式:$.get(url, [data], [callback], [type])

url:请求的URL地址。

data:请求携带的参数。

callback:载入成功时回调函数。

type:设置返回内容格式, html, json, text, _default,默认的是text。

post请求

格式:$.post(url, [data], [callback], [type])

url:请求的URL地址。

data:请求携带的参数。

callback:载入成功时回调函数。

type:设置返回内容格式, html, json, text, _default。

跨域

1.概念

同源策略:协议、域名、端口号 必须完全相同。

违背同源策略就是跨域,也就是协议,端口,域名有任一个不同.

2.解决方法

jsonp:

非官方的跨域解决方法,只支持get方式

原理:利用script标签的跨域能力发送请求

使用:

1.常见一个script标签

var script = document.createElement("script");

2.设置script的src属性,并设置一个回调函数

script.src = "http://localhost:3000/testAJAX?callback=abc";

function abc(data) {

alert(data.name);

};

3.将script添加到body中

document.body.appendChild(script);

4.服务器中路由的处理,也就是将响应书转换为json格式,通过函数传递出去,

注意:原生js的使用,传递的函数要与页面写的函数名一致

jq中使用,传递的函数是req.query.callback方法

router.get("/testAJAX" , function (req , res) {

console.log("收到请求");

var callback = req.query.callback;

var obj = {

name:"孙悟空",

age:18

}

res.send(callback+"("+JSON.stringify(obj)+")");

});

cors:

官方跨域解决方案,在服务器中处理,支持get和post

原理:通过设置一个响应头让浏览器知道该请求跨域,最终放行响应.

使用:

主要是服务器端的设置:

router.get("/testAJAX" , function (req , res) {

//通过res来设置响应头,来允许跨域请求

//res.set("Access-Control-Allow-Origin","http://localhost:3000"); 

res.set("Access-Control-Allow-Origin","*");

res.send("testAJAX返回的响应");

});

你可能感兴趣的:(2022-04-15)