首页 > 编程语言 >JavaScript--AJXS

JavaScript--AJXS

时间:2022-10-28 20:13:55浏览次数:48  
标签:请求 get -- JavaScript xhr url key new AJXS

协议(基于tcp/ip)

超文本传输协议(HyperText Transfer Protocol,HTTP)是用于从WWW服务器传输超文本到本地浏览器的传输协议 (transport)。它可以使浏览器更加高效,使网络传输减少。

请求的类型

同步请求 (上一个请求没完成 不能进行其他操作)

<a href="http://www.baidu.com">去百度</a>
<a href="http://www.wobo.com">去微博</a>

异步请求 (上一个请求没完成和下一个操作没有关系)

setIterval(()=>{
	console.log('123')
},10)
button.onclick = function(){
	setTimeout(()=>{
		console.log('按钮1被点击了')
	},1000)
}
div.onclick = function(){
	console.log('div被点击了')
}
线程和进程

线程 是进程一个组成(最小计量单位)(多个影片下载每个都是一个单独的线程)

进程 进行程序叫做进程(打开爱奇艺 产生一个爱奇艺的进程)

ajax概述

ajax (全称 Asynchronous Javascript And Xml )译为 异步的js和xml。它是用来异步请求数据的(基于http)。它可以实现局部的加载变化。js来进行请求的 携带的数据类型和返回的数据类型为xml形式(早期)。

ajax主要依赖的是一个请求对象 核心对象 xmlHttpRequest

注意:使用XMLHttpRequest时,必须把文件放到Web服务器上。因为AJAX只能向同源网址(协议、域名、端口都相同)发出HTTP请求,如果发出跨源请求,就会报错

ajax的访问流程

  • 创建请求对象(XMLHttpRequest)
  • 打开指定的请求地址 指定对应的请求方式 (open)
  • 带参数 设置请求头
  • 开始请求 (send)
  • 监听对应的请求状态的变化
  • 在监听中读取对应的响应数据 并进行处理

为了在响应准备就绪时得到通知,我们必须监听XMLHttpRequest对象上的 readystatechange 事件。 每当发生状态变化的时候,readyState属性的值就会发生改变。这个值每一次变化,都会触readyStateChange事件。

代码实现
//创建请求对象
var xhr = new XMLHttpRequest()
//调用open()方法并不会真正发送请求,而只是启动一个请求以备发送。
xhr.open('get', 'http://jsonplaceholder.typicode.com/todos')
//发送请求
xhr.send()
xhr.onreadystatechange = function () {
    //5个变化 0 1  2 3 4 状态码 http的状态 100-599(1开头 表示成功但是需要下一步操作 2开头表示成功 3开头表示重定向 4开头表示客户端错误  5开头表示服务器错误)
    if (xhr.readyState == 4 && /^2\d{2}$/.test(xhr.status)) {
        //读取数据 responseText 返回给你是字符串 responseXML 返回给你的是xml
        console.log(xhr.responseText)
    }
}
readyState

readyState 是一个整数,它指定了HTTP请求的状态。它可能的值如下:

  • 0,对应常量UNSENT,表示XMLHttpRequest实例已经生成,但是open()方法还没有被调用。

  • 1,对应常量OPENED,表示open()已调用,但send()方法还没有被调用,仍然可以使用setRequestHeader(),设定HTTP 请求的头信息。

  • 2,对应常量HEADERS_RECEIVED,表示send()方法已经执行,并且头信息和状态码已经收到。

  • 3,对应常量LOADING,表示正在接收服务器传来的主体(body)部分的数据,如果responseType属性是text或者空字符串,responseText就会包含已经收到的部分信息。

  • 4,对应常量DONE,表示服务器数据已经完全接收,或者本次接收已经失败了。

    在IE8之前并没有定义这些值,但使用硬编码值4来表示XMLHttpRequest.DONE。

status

status属性为只读属性,表示本次请求所得到的HTTP状态码,它是一个整数。

  • 200, OK,访问正常
  • 301, Moved Permanently,永久移动
  • 302, Move temporarily,暂时移动
  • 304, Not Modified,未修改
  • 307, Temporary Redirect,暂时重定向
  • 401, Unauthorized,未授权
  • 403, Forbidden,禁止访问
  • 404, Not Found,未发现指定网址
  • 500, Internal Server Error,服务器发生错误
XMLHttpRequest存在兼容问题
var xhr = XMLHttpRequest ? new XMLHttpRequest() :new ActiveXObject("Microsoft.XMLHTTP")

http请求方式

get 请求 (默认请求方式)

它是以?拼接进行传参

它的请求地址以及参数会暴露在地址(不安全)

get请求的数据不能超过2kb

get请求是有历史记录的(缓存的)可以后退的

post 请求 (必须请求方式为post 默认传参是表单传参)

post请求的参数在请求体中被传递

post请求相对于get请求来说不会暴露在地址栏(安全较高)

post请求携带的数据要大于get请求

post请求没有历史记录 (不能后退)

resetful 风格的接口(后台接口的风格)

返回的数据以json格式传递 以请求方式来说区分对应的后端处理业务

get请求 获取操作 post请求添加操作 delete 删除操作 put 修改操作(修改多个) patch 修饰(修改一个)

使用get请求对应的数据并渲染

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <ul></ul>
    <script>
        var xhr = new XMLHttpRequest() || new ActiveXObject("Microsoft.XMLHTTP")
        //ajax在请求的时候 如果是get请求你需要带参数 直接在地址后面将对应的参数拼接 ?key=value&key1=value1
        xhr.open('get', 'http://jsonplaceholder.typicode.com/todos?id=1')
        xhr.send()
        //通过回调函数来解决异步问题
        xhr.onreadystatechange = function () {
            if (xhr.readyState == 4 && /^2\d{2}$/.test(xhr.status)) {
                let result = JSON.parse(xhr.responseText)
                let ul = document.querySelector('ul')
                //进行渲染
                result.forEach((item) => {
                    ul.innerHTML += `<li>
                        ${item.title}
                        ${item.completed ? '

标签:请求,get,--,JavaScript,xhr,url,key,new,AJXS
From: https://www.cnblogs.com/zhouwying/p/16837210.html

相关文章

  • blog_02
    第二次博客作业目录第二次博客作业1.前言2.设计与分析(1)题目集47-2点线形系列4-凸四边形的计算(2)题目集57-1点线形系列5-凸五边形的计算-1(3)题目集57-2点线形系......
  • 读《OpenFlow:Enabling Innovation in Campus Networks》有感
    OpenFlow:南向接口协议最初是运用于校园网建设一、可编程网络的必要性巨量的已安装设备和协议不愿尝试在真实流量中展开实验以上两点导致网络创新难度大,高准入门槛......
  • JavaScript--BOM
    一、BOM的概述虽然ECMAScript把浏览器对象模型(BOM,BrowserObjectModel)描述为JavaScript的核心,但实际上BOM是使用JavaScript开发Web应用程序的核心。BOM提供了......
  • 实验6:开源控制器实践
    实验6:开源控制器实践——RYU一、实验目的能够独立部署RYU控制器;能够理解RYU控制器实现软件定义的集线器原理;能够理解RYU控制器实现软件定义的交换机原理。二、实验环......
  • 社死事件
    今天下午去拿方老师没有给我退的作业(为什么不退呢?)。借此机会又和hyj&wzq聊天,突然发现我们下节课都是化学?好巧。于是一直聊到打预备铃才回班(反正在我们这边的老师都忙得要死......
  • [学习笔记] 差分约束系统
    解决问题解不等式方程。形如\(x_i\lex_j+w\)ps.等式可以化为两个不等式解决方法。相当于每条有向边松弛后的柿子。所以跑最短路即可。但有可能负权,而且要判无解(有......
  • Javascrip内置函数--计时器
    延时执行:setTimeout()  setTimeout的三种写法:console.log(1);/***第一个参数是代码,注意代码需用引号包裹,否则会立即执行代码*第二个参数是1000,即1000ms......
  • Codeforces Round #830 (Div. 2)(持续更新)
    PrefaceAB很水,C一般难度,D1很简单但D2确实巧妙没有现场打有点可惜,后面补的时候都是1A(结果每次比赛的时候都要莫名WA上好久)A.Bestie我刚开始没咋想,感觉操作步数不会很......
  • Python-一个傻瓜可视化的神库Streamlit
    1.如何安装?和安装其他包一样,安装streamlit非常简单,一条命令即可➜pipinstallstreamlit考虑到streamlit会附带安装比较多的工具依赖包,为了不污染当前的主要环境,......
  • 【CF1396E】Distance Matching(构造)
    题意:给一棵\(n\)个点的树,保证\(n\)为偶数,你需要将这\(n\)个点两两配对,使得每对点的距离和恰好为\(k\)。判断无解或输出方案。\(n\leq10^5,k\leqn^2\)。题解:首......