AJAX使用(一)

AJAX属于前端的一门技术,可以不进行页面的刷新就可以和服务端进行交互,尤其是异步的请求,不用等待整个页面加载完就能返回响应的结果,大大提升了用户的体验。

关于HTTP协议以及GET和POST请求以及如何通过F12查看请求头请求行请求体响应头响应体的信息,大伙都很明白了就不说了。

其次我安装了Node.js,即运行js的一个应用程序。

其次通过node里面的核心库npm执行命令,下载express框架,用于简化js代码的书写。

通过指令 npm i express 即可完成下载,然后是AJAX的初涉:

以下是我的JS代码:

const express = require('express');//引入express框架
const app = express();//创建一个express对象
//这里的get是请求的方式,all代表所有请求都可以接收,然后做出响应。
//这里get里面的第一个参数代表访问路径,主机名加端口号加访问路径 app.get(
'/server',(request,response)=>{
//

浏览器的同源安全策略
同源策略,它是由Netscape提出的一个著名的安全策略。现在所有支持JavaScript的浏览器都会使用这个策略。所谓同源是指,域名,协议,端口相同。同源策略是浏览器的行为,是为了保护本地数据不被JavaScript代码获取回来的数据污染,因此拦截的是客户端发出的请求回来的数据接收,即请求发送了,服务器响应了,但是无法被浏览器接收。

设置了如下的代码,就能够跨不同端口号进行访问

    response.setHeader("Access-Control-Allow-Origin","*");
    response.send('HelloWorld!');
});
app.all('/server',(request,response)=>{
    response.setHeader("Access-Control-Allow-Origin","*");
    response.setHeader("Access-Control-Allow-Headers","*");//这里的意思是请求头键值对就算是自定义的也可以接收

    response.send('HelloWorld!');
});
app.all('/json-server',(request,response)=>{
    response.setHeader("Access-Control-Allow-Origin","*");
    response.setHeader("Access-Control-Allow-Headers","*");
    const data = {
        name:"atguigu"
    }
    let str = JSON.stringify(data)

    response.send(str);
});

app.listen(8000,()=>{
    console.log("服务已经启动,监听8000端口中...");
})

书写完上面的js代码后,通过终端和node指令就可以加载js脚本。具体使用如下:

 

 这里前面的是js的路径,这个不能错,我的node.js下在D盘,但是能执行指令的原因是Node.js安装的时候就为我们配置好了环境变量。

然后是HTML页面发送请求的代码:

    bnt.onclick = function (){

      const xhr = new XMLHttpRequest();
      xhr.open("GET","http://localhost:8000/server");
      xhr.send();
      xhr.onreadystatechange = function (){

        if(xhr.readyState ===4){
            if(xhr.status >=200&&xhr.status<300){
                console.log(xhr.status)
                div.innerHTML = xhr.response;
            }
        }
      }
    }

这里以监听点击事件为例:

首先是创建请求对象,然后声明发送请求的方式,然后发送一个请求,这里onreadrstateChange属性需要说一下;

readState是request对象的一个属性,一共有五个值0 1 2 3 4

当readyState==0时,还没发送请求,等于1时,确定了请求方式,等于2时,发送了请求,等于3时,接收到了部分信息,等于4时,接收到了所有信息。

关于

xhr.setRequestHeader('Content-Type','application/x-www-form-urldencoded');

这是一种默认是浏览器编码方式。

我们可以看出,服务器知道参数用符号&间隔,如果参数值中需要&,则必须对其进行编码。编码格式就是application/x-www-form-urlencoded(将键值对的参数用&连接起来,如果有空格,将空格转换为+加号;有特殊符号,将特殊符号转换为ASCII HEX值)。

application/x-www-form-urlencoded是浏览器默认的编码格式。对于Get请求,是将参数转换?key=value&key=value格式,连接到url后

 

posted @ 2023-04-02 22:18  -她的梦-  阅读(17)  评论(0编辑  收藏  举报