首页 > 其他分享 >AJAX--ajax的get请求

AJAX--ajax的get请求

时间:2023-07-29 17:22:22浏览次数:32  
标签:缓存 浏览器 请求 get -- ajax url AJAX

一、get请求

前端代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ajax get请求</title>
</head>
<body>
    <script>
        window.onload = function(){
            document.getElementById("helloBtn").onclick = function(){
                // 发送ajax请求
                // console.log("发送ajax get请求")
                // 1.创建ajax核心对象XMLHttpRequest对象
                var xhr = new XMLHttpRequest()
                // 2.注册回调函数
                // 这是回调函数,这个函数在readyState属性的状态值发生改变的时候被调用
                xhr.onreadystatechange = function(){
                    // 这里回调函数会被调用多次
                    // 0-1-2-3-4 
                    // console.log(xhr.readyState)
                    if(this.readyState == 4){
                        // 响应结束
                        // 响应结束后一边会有一个HTTP的状态码,
                        // HTTP状态码常见的包括200成功  404找不到  500服务器内部错误
                        // 获取HTTP的状态码
                        // console.log(this.status)
                        if(this.status == 404){
                            alert("您访问的资源不存在")
                        }else if(this.status == 500){
                            alert("服务器错误")
                        }else if(this.status == 200){
                            // alert("响应成功")
                            // 完成响应成功了
                            // alert(this.responseText) 以普通文本响应
                            // 把响应信息放入myDiv中
                            document.getElementById("myDiv").innerHTML = this.responseText
                        }
                    }
                }
                // 3.开启通道(open只是浏览器和服务器建立连接,通道打开不会发送请求)
                // open方法
                // open(method,url,async,user,psw)
                // method:请求的方式,GET,POST 也可以是其他请求方式
                // url:请求的路径
                // async:true或者false  true表示一个异步请求,false表示一个同步请求
                // user:用户名  pwd:密码   用户名和密码是进行身份认证的,说明要想访问这个服务器上的资源
                // 可能会需要提供一些口令才能访问,需不需要用户名密码,主要看服务器
                xhr.open("GET","/url",true)
                // 4.发送请求
                xhr.send()
            }
        }
    </script>

    <!-- 用户点击按钮之后发布ajax请求 -->
    <input type="button" value="hello ajax" id="helloBtn">
    <!-- div接收了响应的诗句之后,在div中进行渲染 -->
    <div id="myDiv">

    </div>
</body>
</html>

二、get请求如何提交数据

get请求提交数据实在“请求行”上提交,格式为:url?name=value&name=value&name=value......

 

usercode: <input type="text" name="" id="usercode"><br>
username: <input type="text" name="" id="username"><br>

<script>
// 在使用open方法开启通道时把拼接到url后
var usercode = document.getElementById("usercode").value
var username = document.getElementById("username").value
xhr.open("GET","/url?usercode="+usercode+"&username="+username,true)
</script>

 

 

三、AJAX的get请求的缓存问题

1、对于低版本的IE浏览器来说,AJAX可能会走缓存,存在缓存问题

在HTTP协议中规定get请求:get请求会被缓存起来,post的请求不会被缓存

发送AJAX的get请求时,在同一个浏览器上,获取一个图片的时候需要发送请求,获取到图片之后会放入缓存,当再次访问这个请求路径的时候会从缓存中拿出来图片,这就是get缓存问题

2、get请求缓存的优缺点

优点:直接从浏览器中获取资源,不需要从服务器上重新加载,速度较快,用户体验好

缺点:无法实时获取最新的服务器资源

3、浏览器什么时候会走缓存

1是一个get请求

2请求路径已经被缓存过了,第二次发送请求时路径没有发生改变会走浏览器缓存

4、解决方法

如果是低版本的IE浏览器解决get请求的缓存问题

可以在请求路径url后面添加一个时间戳或者随机数url?time=value,这个时间戳随时变化,所以每一次请求的路径都是不一样的,就不会走浏览器缓存惹

 

标签:缓存,浏览器,请求,get,--,ajax,url,AJAX
From: https://www.cnblogs.com/hyy-0/p/17589900.html

相关文章

  • 复盘笔记
    1知识点1.1开根号、幂运算平方根幂运算1幂运算21.2列表一维列表(数组)的创建a=[0for_inrange(3)]二维列表(数组)的创建a_list=[[0for_inrange(3)]for_inrange(5)]数组的清理a.clear()1.3遍历forkinrange(1,5):#步长为1第一次......
  • 先乘后加与先加再乘最后加
    问题:先加后再再加如何用公式分解1:先乘后加A2*B2+A3*B3……=SUMPRODUCT(A2:A11,B2:B11){=SUM(A2:A11*B2:B11)}分解2:先加后乘再加(A2+B2)*C2+(A3+B3)*C3……=SUMPRODUCT(A2:A11*C2:C11+B2:B11*C2:C11){=SUM(A2:A11*C2:C11,B2:B11*C2:C11)}利用乘法规律解决分解3......
  • MYSQL的安全模式:sql_safe_updates介绍
    查看当前mysqlsession会话下的sql_safe_updatesselect@@sql_safe_updates;查看全局的配置参数sql_safe_updatesselect@@global.sql_safe_updates set[global]sql_safe_updates=1; 在update操作中:当where条件中列(column)没有索引可用且无limit限制时会拒绝更新。whe......
  • pycharm常用快捷键
    本文详细总结了Pycharm的常用快捷键,下文介绍使用方法和场景,并不需要记忆这些快捷键,你只需要知道有这些快捷键,再需要用的时候查看一下,用的多了自然也就记住了,需要的朋友可以参考下1.注释(添加/消除)(Ctrl+/)这里说下Python的单行注释是#,多行注释是'''注释内容......
  • JDK17和ZGC学习
    ZGCSTW会延长服务的RT。CMS有碎片化问题。G1只能在STW的时候移动对象。他俩STW时间随着活跃对象的增加而增加。内存几十GB有可能有几十几百秒的STW。甚至FullGC情况。JDK11引用了ZGC。 ZGC是一款几乎没有STW且支持大堆的GC。STW时间不超过10msSTW时间不随活跃对象的......
  • [粘贴]使用 Dumpling 导出数据
     https://docs.pingcap.com/zh/tidb/stable/dumpling-overview#dumpling-%E4%B8%BB%E8%A6%81%E9%80%89%E9%A1%B9%E8%A1%A8 使用数据导出工具 Dumpling,你可以把存储在TiDB或MySQL中的数据导出为SQL或CSV格式,用于逻辑全量备份。Dumpling也支持将数据导出......
  • 洛谷 P3243 [HNOI2015] 菜肴制作 - toposort 需自己理解翻译题面
    P3243[HNOI2015]菜肴制作题目描述知名美食家小A被邀请至ATM大酒店,为其品评菜肴。ATM酒店为小A准备了\(n\)道菜肴,酒店按照为菜肴预估的质量从高到低给予\(1\)到\(n\)的顺序编号,预估质量最高的菜肴编号为\(1\)。由于菜肴之间口味搭配的问题,某些菜肴必须在另一些......
  • 快读快写 原理详解
    快读快写原理详解目录快读快写原理详解代码快读readquickly快写writequickly代码解释快读第一部分第二部分第三部分第四部分第五部分快写第一部分第二部分第三部分第四部分第五部分参考文献C++的cincout和C的scanfprintf等IO函数已经够我们是用了,但是它们很慢,......
  • RabbitMQ Exception (403) Reason: "no access to this vhost"
    可能原因:1)没有配置该用户的访问权限,可以通过rabbitmqctladd_vhostadmin来添加,并赋予权限:rabbitmqctlset_permissions-p用户名admin".""."".*"代码在连接的时候,必须制定对应的vhost,否则是没有访问权限:conn,err:=amqp.Dial("amqp://sky:password@ip:5672/admin”)2)M......
  • 多层感知机
    #多层感知机#获取数据importd2lzhfrommxnetimportautogradbatch_size=256train_data,test_data=d2lzh.load_data_fashion_mnist(batch_size)#读入数据frommxnetimportndarrayasndnum_input=28*28num_output=10num_hidden=256#中间多......