JS实现Ajax 请求后台接口

接口调用方式 -- 原生ajax (获取多个接口地址) 接口调用方式 -- 原生ajax (获取多个接口地址) 阅读详情

写本文的项目前提是,公司和第三方合作,我们提供H5页面给到第三方,第三方在他们主页面嵌入我们的页面。中间的红框就是 我们要提供的画面。

1、原生JS实现

原生JS理解起来比较简单明了,我这里是把get请求和post请求都抽出来了。

// obj包括接口参数、接口地址、请求类型
// successFun成功回调
// errorFn失败回调
// flag 同步、异步   true-异步
function httpAjax(obj, successFun, errorFn){
    var xmlHttp = null;
    if(window.XMLHttpRequest){
        xmlHttp = new XMLHttpRequest;
    }else if(window.ActiveXObject){
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    var httpMethod = obj.method.toUpperCase();
    var httpUrl = obj.url;
    var requestData = JSON.stringify(obj.data) || {};
    xmlHttp.onreadystatechange = () => {  //每当 readyState 属性改变时,就会调用该函数
		if(xhr.readyState === 4 && (xhr.status >= 200 && xhr.status < 300)) {
			//请求成功执行的回调函数
			successFun(xmlHttp.responseText);
		}else {
            errorFn()
        }
	}
    
    //请求接口
	if(httpMethod == 'GET'){
		xmlHttp.open("GET",httpUrl,obj.flag);
		xmlHttp.send();
	}else if(httpMethod == "POST"){
		xmlHttp.open("POST",httpUrl,obj.flag);
		xmlHttp.setRequestHeader("Content-Type","application/json");
		xmlHttp.send(requestData);
	}
   
}



// 调用方式
let params = {
    flag: true, //异步请求
    data: {}, //接口数据
    url: 接口地址,
    method: "post"
}
httpAjax(params, function(res){
    let result = JSON.parse(res) // JSON.parse() 方法用来解析JSON字符串,构造由字符串描述的JavaScript值或对象
}, function(){
    console.log("返回错误")
})

2、使用Promise实现

使用Promise实现换了回调的方式 没看起来规格更高级~哈哈;

建议先理解一下Promise的基本原理

function httpAjax(obj){
    const p = new Promise((resolve, reject) => {
        var xmlHttp = new XMLHttpRequest()
        var httpMethod = obj.method.toUpperCase();
        var httpUrl = obj.url;
        var requestData = JSON.stringify(obj.data) || {};
        xmlHttp.onreadystatechange = () => {  //每当 readyState 属性改变时,就会调用该函数
		    if(xhr.readyState === 4 && (xhr.status >= 200 && xhr.status < 300)) {
			   resolve(JSON.parse(xhr.responseText))
		    }else {
                reject("错误")
            }
	    }
    
        //请求接口
	    if(httpMethod == 'GET'){
		    xmlHttp.open("GET",httpUrl,obj.flag);
		    xmlHttp.send();
	    }else if(httpMethod == "POST"){
		    xmlHttp.open("POST",httpUrl,obj.flag);
		    xmlHttp.setRequestHeader("Content-Type","application/json");
		    xmlHttp.send(requestData);
	    }
    
    })

    return p
   
}


// 调用

httpAjax(url).then(res => {console.log(res)}).catch(reason => {console.log(reason)})

手把手教你用RMII接口配置以太网PHY芯片(附YT8512实战代码) 本文详细介绍了如何使用RMII接口配置以太网PHY芯片,以国产YT8512为例,提供从硬件设计到软件驱动的全流程实战指南。内容包括RMII接口技术解析、YT8512硬件设计要点、驱动开发实战代码及常见问题排查,帮助开发者快速实现以太网通信功能。 阅读详情

相关推荐

别再只看K线了!聊聊“板块联动”和“热点轮动”的跟踪方法与工具(实战派分享)

本文深入解析了如何通过板块联动和热点轮动构建高效交易系统。从三维验证框架到主流工具配置,再到持续性热点的五大特征,实战派交易员分享了识别市场主线和预判轮动方向的高阶技巧,帮助投资者摆脱单纯依赖K线的局限,提升交易决策效率。

weixin_29281941的博客 756

ajax 后台调用,ajax跨域调用和后台的接口的方法

一:java后台public void getNotices() {String callback = getPara("callback");List notices = NoticeService.me.getNotices();if (null == callback || callback.trim().equals("")) {renderJson(notices);} else {re...

weixin_35810162的博客 312

使用STC15F104W产生PWM脉冲

最近的小项目中使用到了STC15F104W产生PWM脉冲

yeats1989的专栏 1万+

Ajax请求后端接口(GET、POST、轮询请求)

ajax是什么?post、get、每隔几秒

qq_41644069的博客 3万+

别再对着手册发愁了!手把手教你读懂MIPI-DSI初始化命令(以Rockchip平台为例)

本文深入解析MIPI-DSI初始化命令在Rockchip平台的应用,帮助嵌入式工程师快速掌握LCD屏幕调试技巧。从协议基础到实战指南,详细拆解命令格式、DCS与Generic命令的区别,并提供Rockchip平台的调试全流程与高级技巧,解决常见显示问题。

weixin_42519781的博客 262

手把手教你用闲置安卓手机+蓝鲸支付,零成本搞定个人项目自动收款(附私有化部署教程)

本文详细介绍了如何利用闲置安卓手机和蓝鲸支付系统,零成本搭建个人项目自动收款解决方案。通过私有化部署教程,读者可以学习到从手机选择、系统配置到支付渠道对接的全流程,实现安全、高效的收款系统,特别适合个人开发者和小型项目使用。

weixin_29597551的博客 334

ajax访问后端接口方式,简单又省心

今天来聊聊ajax的简单访问方式,当然你必须要导入JQuery.js的包, 第一种 : $.post 这里的ps可以是一个表单的序列,也就是表格里面所有包含name的参数,都会在访问时传入后台。 var ps = $("#submit_form").serialize();该操作即是将表单内容序列化为字符串。 当然如果你不想使用ps,想使用另外一种方式也是可以的:将 ps 替...

qq_43227967的博客 1935

DataGridView添加新行时在单元格绑定下拉列表DataGridViewComboBoxCell

效果图如下 先在界面上添加DataGridView,添加字段no、type、param 在lord事件中新建一行 dataGridView1.Rows.Add(); 在RowsAdded事件中操作新建的行 private void dataGridView1_RowsAdded_1(object sender, DataGridViewRowsAddedEventArgs...

wuqinglaohao的博客 1985

ajax通过get方式实现前后端连接交互,传输数据

responseText、readystatechange、xhr.status、http状态码、open()配置方法

YY的博客 3590

彻底解析 DDIC_TYPE_INCONSISTENCY:从 ABAP ST22 连环 Dump 到 SE14 一键修复

听上去像内核级的致命故障,实则更多源于日常运维的细枝末节。只要掌握的排查三板斧,结合严格的变更流程与周期性的字典体检,再严重的 Dump 也能化险为夷。希望本文的案例与步骤能帮助读者在下一次遇到类似问题时,既能快速止血,也能追根溯源,避免重蹈覆辙。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 628

100:vue+cesium: 加载glb文件,随机位置加载2000架飞机

本示例在 Vue + cesium 项目中随机位置加载2000架飞机,飞机是glb文件,每个大小为571kb。这个示例属于性能优化的范畴内,通常如果用entity加载glb只能显示几个飞机,这里采用primitive的方法来加载。直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果.

大剑师兰特的GIS世界 706

node+mysql+ajax+javascript搭建一套服务接口,实现前后台数据请求

node+mysql+ajax+javascript搭建一套服务接口,实现前后台数据请求 效果图如下所示: 启动服务get请求查询mysql数据库express介绍 Express 基于 Node.js 平台,快速、开放、极简的 web 开发框架。 Web 应用 Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各...

追梦&天空的博客 3029

迟滞比较器原理及计算

为什么要用迟滞比较器 在讲迟滞比较器之前,我们先看一个案例。 在产品设计中常常需要用到电机,而电机在从运转到停止过程中需要泄放能量,这种能量大部分以电压的形式反馈回电源母线(Vbus)导致Vbus母线电压升高,特别是功率大又转速快的电机需要急刹时,产生的反馈电压更高,严重时可能导致母线上其他器件的损坏。 为了防止将电机反馈的能量泄放掉,我们需要设计一个电路来检测母线电压,当母线电压高于某一安全阈值时,打开MOSFET Q1将母线上的能量通过电阻R5以热的形式消耗掉。 假如用一般的比较器,设计如下: Vbu

sinat_15677011的博客 2万+

Node.js接口(简单制作前后台交互效果)

接下来,我们来制作一个简单的前后台页面交互效果制作,其中用到的技术分别是HTML,CSS,JS,Node.js,Ajax。接下来由我来带大家制作。 制作HTML页面 首先需要用到简单的HTML搭建一个HTML的页面这个页面中有一个输入框与一个提交按钮。 为HTML页面添加简单的CSS样式(为了美观,可以不用添加) 然后开始书写JS相关代码(重要) 首先,我们需要通过JS代码来获取文本框,与按钮。这里用到了docum..

weixin_46221897的博客 705

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

java调用arcgis接口_ArcGis server 调用Javascript API实现与后台的参数传递

1.在页面端,首先撰写自定义的javascript方法,有了这个方法,就可以在前端页面的任何地方去触发地图事件了:function test(str){//需要传递到后台的自定义参数var str1=encodeURI(encodeURI(str));//“mapForm”是地图页面上的表单名,从该表单获取向后台提交的URLvar url = EsriUtils.getServerUrl("map...

weixin_35656580的博客 972

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

使用ajax实现前后端是数据交互

ajax的概念 ajax一个前后台配合的技术,它可以让javascript发送http请求,与后台通信,获取数据和信息。ajax技术的原理是实例化xmlhttp对象,使用此对象与后台通信。jquery将它封装成了一个函数$.ajax(),我们可以直接用这个函数来执行ajax请求。 ajax需要在服务器环境下运行。 $.ajax使用方法 常用参数: 1、url 请求地址 2、type 请求方式,默认...

Progran_ape的博客 1273

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Ajax调用第三方接口;ICP备案查询;PHP后台调用接口;Js调用第三方接口;Ajax+PHP接口开发;

每一行都有注释,看了就会,最下方有详细说明。描述这么详细的博主可不多了。话不多说,上图! .PHP $domain = $_POST['domain'];//接收域名 $url = 'https:://API地址';//这里传值方式采用的是post //提交的post数据 $post_data=array( "key" => '密钥', "domain" => $domain ); //下面代...

我的世界 552

没有后台接口时用ajax刷新数据的方法

有时候用php写的动态页面需要实时更新数据,一般用ajax来动态刷新数据,但是如果没有特殊的后台接口,是无法直接用ajax获取数据的。 我想到的方法就是用ajax重新请求当前页面,然后解析返回的html,从中提取数据进行更新。代码如下: function AjaxRefresh(){ $.ajax({url:window.location.href, success:function(

鞠培中的专栏 1350

Ajax的实现

JQuery中Ajax官方文档

weixin_42243479的博客 128

前后端通信中使用Ajax与后台接口api交互(以登录功能为例)

一、查阅开发文档 首先,要做这个功能前,我们必须先查阅后台接口文档,了解使用登录接口时,需要提交哪些参数,并且接口使用返回的数据。这里我使用了一个返回json格式数据的登录接口为例,讲解怎么使用Ajax与后台接口交互。    由上图开发文档里,我们可以清楚的知道,要使用这个登录接口,我们只需要提交账号adminName和密码pwd两个参数。 二、编写javascr...

weixin_30492047的博客 735

js利用ajax同步调用如何

一、定义请求后台的方法。

weixin_52472152的博客 314

admin ajax,如何在FastAdmin中使用Ajax发送请求?

html页面:js文件里添加以下代码:{field: 'uid', title: __('解绑'), table: table, buttons: [{name: 'ajax',text: __('解绑'),title: __('解绑'),classname: 'btn btn-xs btn-success btn-magic btn-ajax',icon: 'fa fa-magic',url: ...

weixin_36397146的博客 1923

ajax提交用流的方式,ajax 请求 后台返回的文件流

download(url) {var xhr = new XMLHttpRequest();xhr.open('GET', url, true); // 也可以使用POST方式,根据接口xhr.responseType = "blob"; // 返回类型blob// 定义请求完成的处理函数,请求前也可以增加加载框/禁用下载按钮逻辑xhr.onload = function () {// 请...

weixin_30613479的博客 3979

H+后台框架,实现使用js在TabA中点击按钮打开或刷新TabB页面

需求:后台框架js实现点击页面按钮打开指定的新tab页,若已打开只刷新新tab的内容,未打开就打开新tab。2: 打开目标tab的page('你的目标tab接口地址','目标tab名称')实现。1: 按钮点击事件函数 ajax 实现。

随笔 930

关于Ajax

1、Ajax概述 Ajax是异步的JavaScript和XML。 异步:在不刷新浏览器的条件下可以与服务器交互 2、Ajax实现动态页面的设计 (1)设计页面 (2)运用XMLHttpRequest和web服务器进行data的异步交换。 (3)运用Dom操作,实现局部动态设计 var request=new XMLHttpRequest() 3、Ajax通过XHR发送请求至服务器 var req...

mzr_优快云的博客 155

ajax vue写入mysql_vue实战使用ajax请求后台数据(小白)

vue实战使用ajax请求后台数据(小白)前言:前端小白入门到这个阶段,应该会知道我们所做的页面上那些数据,绝大部分都不是静态的数据,而是通过调用后台接口把数据渲染到页面上的效果。ajax可以帮助我们更好的去实现这一点,下面是详解在vue中如何使用它。vue本身它是不支持直接发送ajax请求的,需要用到axios(一个基于promise的HTTP库,可以用在浏览器和node.js中)这是Axios...

weixin_42321940的博客 406
上一篇: Vue使用Ant Design中Tree组件用到的关于树的方法
下一篇: Vue 九宫格抽奖实现
逩跑鍀小学生
博客等级 码龄5年 37粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值