前言:作为前端开发,向后端发起请求这是必不可少的一个步骤,通过请求,后端返回给我们相应的数据,根据数据我们做出相应的操作。一般来说,现在很多前端开发者发起请求时都是采用第三方库来实现,比如axios、jQuery库等等。

一.利用jQuery实现ajax方法

采用jQuery封装好的ajax方法发起请求很简单,代码就简单如下就可以了。

$.ajax({url: ,type: '',dataType: '',data: {},success: function(){},error: function(){}})

我们只需要填入相应的参数属性就可以了。

二.利用原生JavaScript实现ajax请求

原生JS中,我们主要是利用一个叫做XMLHttpRequest的对象进行后台与服务端数据的交换,具体代码可参考如下:

var Ajax={get: function(url, fn) {// XMLHttpRequest对象用于在后台与服务器交换数据   var xhr = new XMLHttpRequest();            xhr.open('GET', url, true);xhr.onreadystatechange = function() {// readyState == 4说明请求已完成if (xhr.readyState == 4 && xhr.status == 200 || xhr.status == 304) { // 从服务器获得数据 fn.call(this, xhr.responseText);  }};xhr.send();},// datat应为'a=a1&b=b1'这种字符串格式,在jq里如果data为对象会自动将对象转成这种字符串格式
  post: function (url, data, fn) {var xhr = new XMLHttpRequest();xhr.open("POST", url, true);// 添加http头,发送信息至服务器时内容编码类型xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");  xhr.onreadystatechange = function() {if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 304)) {fn.call(this, xhr.responseText);}};xhr.send(data);}
}

注释:

1. open(method, url, async) 方法需要三个参数:

**method:**发送请求所使用的方法(GET或POST);与POST相比,GET更简单也更快,并且在大部分情况下都能用;然而,在以下情况中,请使用POST请求:

无法使用缓存文件(更新服务器上的文件或数据库)
向服务器发送大量数据(POST 没有数据量限制)
发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠
**url:**规定服务器端脚本的 URL(该文件可以是任何类型的文件,比如 .txt 和 .xml,或者服务器脚本文件,比如 .asp 和 .php (在传回响应之前,能够在服务器上执行任务));

**async:**规定应当对请求进行异步(true)或同步(false)处理;true是在等待服务器响应时执行其他脚本,当响应就绪后对响应进行处理;false是等待服务器响应再执行。

2. send() 方法可将请求送往服务器。

3. onreadystatechange:存有处理服务器响应的函数,每当 readyState 改变时,onreadystatechange 函数就会被执行。

4. readyState:存有服务器响应的状态信息。(更加具体的状态码信息可自行百度)

0: 请求未初始化(代理被创建,但尚未调用 open() 方法)
1: 服务器连接已建立(open方法已经被调用)
2: 请求已接收(send方法已经被调用,并且头部和状态已经可获得)
3: 请求处理中(下载中,responseText 属性已经包含部分数据)
4: 请求已完成,且响应已就绪(下载操作已完成)
5. responseText:获得字符串形式的响应数据。
6. setRequestHeader():POST传数据时,用来添加 HTTP 头,然后send(data),注意data格式;GET发送信息时直接加参数到url上就可以,比如url?a=a1&b=b1。

示例:

            var uri = 自己的API//创建XMLHTTPRequest对象var req = new XMLHttpRequest();//使用open方法设置和服务器的交互信息,参数一是请求的类型,//参数二是请求的url, 可以带参数, 动态的传递参数starName到服务端 参数三是规定应当对请求进行异步(true)或同步(false)处理req.open("get", uri, false);//设置HTTP请求头部req.setRequestHeader("Accept", "application/json");req.setRequestHeader("Content-Type", "application/json; charset=utf-8");req.setRequestHeader("OData-MaxVersion", "4.0");req.setRequestHeader("OData-Version", "4.0");//注册事件 onreadystatechange 状态改变就会调用req.onreadystatechange = function () {if (this.readyState == 4) {if (this.status == 200) {var data = JSON.parse(this.responseText);if (data.value.length > 0) {//获取信息state = data.value[0].字段;show = true;} else {show = false;}}}};//发送请求req.send();

进行封装处理:

this.executeWebAPI = function (requestType, requestUri, requestData, successCallback, errorCallback, isAsync) {var req = new XMLHttpRequest();if (isAsync == null) {isAsync = true;}req.open(requestType, encodeURI(requestUri), isAsync);req.setRequestHeader("Accept", "application/json");req.setRequestHeader("Content-Type", "application/json; charset=utf-8");req.setRequestHeader("OData-MaxVersion", "4.0");req.setRequestHeader("OData-Version", "4.0");req.setRequestHeader("Prefer", "odata.include-annotations=*");req.onreadystatechange = function () {if (this.readyState == 4 /* complete */) {req.onreadystatechange = null;if (this.status == 200) {if (successCallback) {successCallback(JSON.parse(this.responseText));}}else if (this.status == 204) {if (successCallback) {successCallback(this.getResponseHeader("OData-EntityId"));}}else {var error = JSON.parse(this.response).error;if (errorCallback) { errorCallback(error); }else { Xrm.Utility.alertDialog(error.message); }}}};req.send(JSON.stringify(requestData));}

调用:

executeWebAPI("GET",   //请求方式uri,     //请求路径null,    //携带的参数function (data) {  //响应成功alert(data)},function (data) {  //响应失败alert(data.message);}, false);       //是否异步请求

原生JS实现Ajax请求相关推荐

  1. js原生ajax跨域请求,封装一个原生js的ajax请求,支持IE9CORS跨域请求

    前言 关于纯js的ajax请求,我之前有文章写过, https://www.haorooms.com/post/js_ajax_chun , 关于CORS跨域资源共享,我也有文章写过, https:/ ...

  2. 原生ajax如何跨域,封装一个原生js的ajax请求,支持IE9CORS跨域请求

    前言 关于纯js的ajax请求,我之前有文章写过,https://www.haorooms.com/post/js_ajax_chun, 关于CORS跨域资源共享,我也有文章写过,https://ww ...

  3. 原生js的ajax请求

    什么是ajax ajax的出现,刚好解决了传统方法的缺陷.AJAX 是一种用于创建快速动态网页的技术.通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个 ...

  4. 原生JS写Ajax的请求函数

    本文主要介绍了如何通过原生JavaScript封装ajax请求,文中给出了具体的实现代码和详细的解释,希望对你有所帮助. 一.JS原生Ajax ajax:一种请求数据的方式,不需要刷新整个页面: aj ...

  5. php上js实现ajax请求,原生JS如何实现Ajax通过POST方式与PHP进行交互的方法

    原生JS如何实现Ajax通过POST方式与PHP进行交互的方法 发布时间:2021-04-20 11:28:22 来源:亿速云 阅读:52 作者:小新 这篇文章将为大家详细讲解有关原生JS如何实现Aj ...

  6. 原声ajax发送post请求,原生JS实现ajax 发送post请求

    1. [代码]原生JS实现ajax 发送post请求 var oStr = ''; var postData = {}; var oAjax = null; //post提交的数据 postData ...

  7. 原生js实现Ajax,JSONP

    Ajax内部的几个执行步骤 创建XMLHttpRequest对象(new XMLHttpRequest()) 设置请求头(setRequestHeader) 连接服务器(open()) 设置回调(on ...

  8. 使用原生js写ajax

    // 使用原生js 封装ajax // 兼容xhr对象 function createXHR(){if(typeof XMLHttpRequest != "undefined"){ ...

  9. Ajax工作原理和原生JS的ajax封装

    前言: 之所以用ajax作为博客的开篇,是因为无论从ajax的出现还是从它的作用上来说,ajax对于前端无疑是意义重大的.甚至可以说,是ajax带来了前端这个行业.当然,历史并不能说明当下,曾经的辉煌 ...

  10. java原生的ajax怎么写,用原生js实现 ajax方法

    原标题:用原生js实现 ajax方法 作者介绍:咔拉宝宝前端工程师,致力于首个情景式购物商城咔拉商城的前端搭建,在咔拉职场栏目作为程序猿担当,与读者朋友们共同探讨前端开发的那些事. 一.ajax介绍: ...

最新文章

  1. TokuDB介绍——本质是分形树(一个叶子4MB)+缓存减少写操作
  2. python是不是特别垃圾-【转】python是垃圾吗?
  3. Kubernetes容器上下文环境
  4. Python解决中文乱码问题
  5. [奇葩 bug]视图在 ipad5 上正常显示,在 iPad3上超出了边界
  6. Oracle DBA课程系列笔记(5)
  7. strus2拦截器中获取客户端ip
  8. 计算机网络 第三章 数据链路层
  9. .htaccess 基础教程(四)Apache RewriteCond 规则参数
  10. mysql 刷新二进制日志_mysql binglog 二进制日志文件
  11. 阶段3 2.Spring_07.银行转账案例_1 今日课程内容介绍
  12. SQL Server常用查询指令
  13. Java 项目经典代码
  14. Ubuntu下QQTIM安装
  15. 四、登录注册页功能实现《iVX低代码/无代码个人博客制作》
  16. ap音频测试仪软件,美国进口音频分析仪/AP音频测试仪/电声测试仪
  17. maven命令指定配置文件
  18. 华为转正答辩ppt范文_华为转正答辩ppt模板下载-精选版.ppt
  19. R数据分析:随机截距交叉滞后RI-CLPM与传统交叉滞后CLPM
  20. P2P 之 UDP穿透NAT的原理与实现(附源代码)

热门文章

  1. perl脚本 linux,linux – 通过Perl脚本设置环境变量
  2. 主流GPS方案供应商大盘点
  3. 洛谷 P2525 Uim的情人节礼物·其之壱
  4. 单片机 c语言 可控硅,以单片机控制为核心的晶闸管触发装置简单设计方案
  5. 弹性力学第五版pdf_弹性力学txt-弹性力学pdf-谁知我电子书
  6. 模板引擎 Velocity语法
  7. 加油吧!数字化转型@网络电视台拿了个“云第一”
  8. 格式工厂 wav 比特率_智能音乐格式转换
  9. sun java认证真题,sun scjp考试心得_java认证
  10. dreamweaver序列号免费_dreamweaver8【dreamweaver8序列号】dreamweaver8注册码序列号简体中文版...