原生JS模拟JQuery封装Ajax

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<meta http-equiv="X-UA-Compatible" content="ie=edge">

<title>原生JS模拟JQuery封装Ajax</title>

<script src="./mock-min.js"></script>

</head>

<body>

<button id="btn">异步发送请求</button>

<p id="oP"></p>

<script>

btn.onclick = function(){

ajax(data);

}

// data作为参数传入我们下面封装的函数

let data = {

type: ‘get‘,

//数据

data: {

user: "xiejie",

pass: ‘123456‘,

age: 18,

},

//回调函数

success: function (data) {

console.log(data);

document.getElementById(‘oP‘).innerHTML = data;

},

error:function(err){

console.log(err);

},

// 异步发送请求

async: true,

// 发送请求的url

url: ‘getStudent‘

}

// 辅助函数,把传进来的对象拼接成url的字符串

function toData(obj) {

if (obj === null) {

return obj;

}

let arr = [];

for (let i in obj) {

let str = i + "=" + obj[i];

arr.push(str);

}

return arr.join("&");

}

// 封装Ajax

function ajax(obj) {

//指定提交方式的默认值

obj.type = obj.type || "get";

//设置是否异步,默认为true(异步)

obj.async = obj.async || true;

//设置数据的默认值

obj.data = obj.data || null;

// 根据不同的浏览器创建XHR对象

let xhr = null;

if (window.XMLHttpRequest) {

// 非IE浏览器

xhr = new XMLHttpRequest();

} else {

// IE浏览器

xhr = new ActiveXObject("Microsoft.XMLHTTP");

}

// 区分get和post,发送HTTP请求

if (obj.type === "post") {

xhr.open(obj.type, obj.url, obj.async);

xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

let data = toData(obj.data);

xhr.send(data);

} else {

//get test.php?xx=xx&aa=xx

let url = obj.url + "?" + toData(obj.data);

xhr.open(obj.type, url, obj.async);

xhr.send();

}

// 接收返回过来的数据

xhr.onreadystatechange = function () {

if (xhr.readyState === 4) {

if (xhr.status >= 200 && xhr.status < 300 || xhr.status == 304) {

if (obj.success) {

obj.success(xhr.responseText);

}

} else {

if (obj.error) {

obj.error(xhr.status);

}

}

}

}

}

// 接下来我们使用Mock来截取Ajax请求

Mock.mock(/getStudent/, ‘get‘, function () {

return data.data;

});

</script>

</body>

</html>

原文地址:https://www.cnblogs.com/lyl-0667/p/11286751.html

时间: 2024-10-13 22:20:30

原生JS模拟JQuery封装Ajax的相关文章

【第2章第300回】原生JS与jQuery对AJAX的实现

一.定义 W3C里这么解释AJAX: AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML).AJAX 不是新的编程语言,而是一种使用现有标准的新方法.AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下. 就是利用JS来无刷新与后端交互,通过get和post方式把数据发送到后端,或者请求后端的数据,然后根据请求的数据进行改变DOM节点等操作,从而取消掉用form的submit方式一提交就会跳转页面的情况

原生js和jquery发送ajax请求及封装

原生js                                   // ajax get 五部曲function ajax_get(url,data){ // 异步对象 var ajax=new XMLHttpRequest(); // 设置url和请求方式 // url方法 如果有数据要把数据拼接到url中?name=jack&age=20 if(data){ url+=?; url+=data; }else{}; ajax.open('get',url); // 发送请求 aja

简单的原生js 模拟jquery方法

仓促的模拟敲一下就上传来保存了. Object.prototype.fadeIn = function(speed) { var that = this; setTimeout(function() { that.style.display = "block" }, speed) return that; } //原生模拟jq中 fadeOut()方法: Object.prototype.fadeOut = function(speed) { var that = this; setT

ajx技术解析以及模拟jQuery封装

1.后台处理程序 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String username = request.getParameter("username"); String password = request.getParameter("password&q

javascript 学习小结 (三) jQuery封装ajax尝试 by FungLeo

javascript 学习小结 (三) jQuery封装ajax尝试 by FungLeo 前言 在JS学习中,对于原生的很多东西我理解得并不透彻.但是使用jQuery来操作DOM,基本上还是非常熟练的.但是对于AJAX数据交互的处理,我不是很理解. 近期团队交给我一个后端全接口提供给我的项目.我要利用这些接口来自己组织前端代码.为了学习,我决定不使用VUE或者其他的前端框架来做.而是只使用jQuery框架,数据的部分全部使用拼接字符串的形式实现. 获取数据,显示数据,提交数据. 在这个项目中(

原生JS面向对象思想封装轮播图组件

原生JS面向对象思想封装轮播图组件 在前端页面开发过程中,页面中的轮播图特效很常见,因此我就想封装一个自己的原生JS的轮播图组件.有了这个需求就开始着手准备了,代码当然是以简洁为目标,轮播图的各个功能实现都分别分为不同的模块.目前我封装的这个版本还不适配移动端,只适配PC端. 主要的功能有:自动轮播,点击某一张图片对应的小圆点就跳转到指定图片,有前后切换按钮.使用的时候只需要传入图片的路径以及每张图片分别所对应的跳转路径还有目标盒子ID就可以了,还可以自定义每张图轮播的延时,不过延时参数不是必须

原生js仿jquery一些常用方法

原生js仿jquery一些常用方法 下面小编就为大家带来一篇原生js仿jquery一些常用方法(必看篇).小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 最近迷上了原生js,能不用jquery等框架的情况都会手写一些js方法,记得刚接触前端的时候为了选择器而使用jquery...现在利用扩展原型的方法实现一些jquery函数: 1.显示/隐藏 //hide() Object.prototype.hide = function(){ this.style.displa

Jquery封装ajax

? Load方法 ????<!-- 将jquery.js导入进来 --> ????<script type="text/javascript" src="js/jquery-1.7.2.js"></script> ????<script type="text/javascript"> ????$(function(){ ????????$("a").click(function(

&lt;&lt;&lt; 网页中如何利用原生js和jquery储存cookie

javascript当中的cookie机制,使应用达到了真正的全局变量的要求,cookie是浏览器提供的一种机制,它将document 对象的cookie属性提供给JavaScript.可以由JavaScript对其进行控制,而并不是JavaScript本身的性质,由于cookie机制是把信息储存到硬盘,所以他可以用来做全局变量 cookie有关安全性和作用域 1.cookie可能被禁用.当用户非常注重个人隐私保护时,他很可能禁用浏览器的cookie功能:  2.cookie是与浏览器相关的.这