IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> JavaScript复习笔记 (九)AJAX -> 正文阅读

[JavaScript知识库]JavaScript复习笔记 (九)AJAX

Asynchronous JavaScript and XML,用JS执行异步网络请求。

Web的运作原理:一次HTTP请求对应一个页面。
因此如果要让用户留在当前页面中,同时发出新的HTTP请求,就必须用JavaScript发送这个新请求,接收到数据后,再用JavaScript更新页面。

AJAX请求是异步执行,通过回调函数获得响应。
主要依靠XMLHttpRequest对象实现

//现代浏览器
//var request = new XMLHttpRequest(); // 新建XMLHttpRequest对象
//针对低版本的IE
//var request = new ActiveXObject('Microsoft.XMLHTTP'); // 新建Microsoft.XMLHTTP对象

var request;
if (window.XMLHttpRequest) {
    request = new XMLHttpRequest();
} else {
    request = new ActiveXObject('Microsoft.XMLHTTP');
}

request.onreadystatechange = function () { // 状态发生变化时,函数被回调
    if (request.readyState === 4) { // 成功完成
        // 判断响应结果:
        if (request.status === 200) {
            // 成功,通过responseText拿到响应的文本:
            return success(request.responseText);
        } else {
            // 失败,根据响应码判断失败原因:
            return fail(request.status);
        }
    } else {
        // HTTP请求还在继续...
    }
}

// 发送请求:
request.open('GET', '/api/categories');
request.send();
  • XMLHttpRequest对象的open()方法有3个参数,第一个参数指定是GET还是POST,第二个参数指定URL地址,第三个参数指定是否使用异步,默认是true,所以不用写。
  • 最后调用send()方法才真正发送请求。
  • GET请求不需要参数,POST请求需要把body部分以字符串或者FormData对象传进去。

浏览器的同源策略:

默认情况下,JavaScript在发送AJAX请求时,URL的域名必须和当前页面完全一致。

  • 域名相同(www.example.com和example.com不同)
  • 协议相同(http和https不同)
  • 端口号相同(默认是:80端口,它和:8080就不同)。

JS跨域

1?? 通过Flash插件发送HTTP请求(不建议)
2?? 代理服务器转发 ( 需要服务器端额外做开发 )
3?? JSONP

  • 只能用GET请求,并且要求返回JavaScript。
  • 这种方式跨域实际上利用了浏览器允许跨域引用JavaScript资源
  • 具体
    1.在页面中准备好回调函数
    2.动态添加<script>节点( 动态读取外域JavaScript资源
    3.接收回调

4?? CORS ( 浏览器支持HTML5 )
全称Cross-Origin Resource Sharing,是HTML5规范定义的如何跨域访问资源

简要原理:
Origin表示本域,也就是浏览器当前页面的域。
当JavaScript向外域发起请求,浏览器收到响应后,首先检查Access-Control-Allow-Origin是否包含本域,
如果是,则此次跨域请求成功,如果不是,则请求失败,JavaScript将无法获取到响应的任何数据。

假设本域是my.com,外域是sina.com,只要 响应头Access-Control-Allow-Origin为http://my.com,或者是*,本次请求就可以成功。

【 跨域能否成功,取决于对方服务器是否设置了一个正确的Access-Control-Allow-Origin。 】

简单请求包括GET、HEAD和POST(POST的Content-Type类型
仅限application/x-www-form-urlencodedmultipart/form-datatext/plain),并且不能出现任何自定义头,通常能满足90%的需求。
对于PUT、DELETE以及其他类型如application/json的POST请求,在发送AJAX请求之前,浏览器会先发送一个OPTIONS请求(称为preflighted请求)到这个URL上,询问目标服务器是否接受。服务器必须响应并明确指出允许的Method。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-06-29 18:55:53  更:2022-06-29 18:57:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/11 10:08:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码