利用promise及参数解构封装ajax请求的方法_AJAX相关

来源:脚本之家  责任编辑:小易  

1.前端代码

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Document</title>
</head>
<body>
 <script>
 /**
  * type: get/post
  * url: http://localhost:3000 http://localhost:3000/details http://localhost:3000/users
  * data: lid=5 / uname=lili&upwd=123456
  * dataType: '' / 'json', 如果服务端返回的是json格式字符串,就通过dataType通知ajax函数自动转换为对象
  * **/
 ajax({
  type: 'get',
  url: 'http://localhost:3000',
  dataType: 'json'
 })
 // data 不写在解构时值默认为 data: undefined
 ajax({
  type: 'get',
  url: 'http://localhost:3000/details',
  data: 'lid=0',
  dataType: 'json'
 })
 ajax({
  type: 'post', 
  url: 'http://localhost:3000/users', 
  data: 'uname=lili&upwd=123456',
 }).then(function(res){
  alert(res)
 })
 // dataType 不写在解构时值默认为 dataType: undefined

 function ajax({type, url,data, dataType}){
  return new Promise(function(open){
  var xhr = new XMLHttpRequest()
  xhr.onreadystatechange = function(){
   if(xhr.readyState === 4 && xhr.status === 200){
   if(dataType === 'json'){
    var res = JSON.parse(xhr.responseText)
   }else{
    var res = xhr.responseText
   }
   console.log(res)
   open(res)
   }
  }

  if(type === 'get' && data !== undefined){
   url += `?${data}`
  }
  xhr.open(type, url, true)
  xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded')

  if(type === 'get'){
   xhr.send()
  }else{
   xhr.send(data)
  }
  })
 }
 </script>
</body>
</html>

另:ajax实际代码实现如下

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Document</title>
</head>
<body>
 <script>
 var xhr = new XMLHttpRequest()
 xhr.onreadystatechange = function(){
  if(xhr.readyState === 4 && xhr.status === 200){
  console.log(xhr.responseText)
  }
 }
 xhr.open('get', 'http://localhost:3000', true)
 xhr.send()
 </script>
</body>
</html>

2.后端代码

1) 创建一个后端项目

在这里插入图片描述

2) 在routes下创建index.js,users.js,代码如下

// index.js
var express = require('express');
var router = express.Router();

/* GET home page. */
var products = [
 {
 lid:1,
 pname:'笔记本',
 price:3400
 },
 {
 lid:2,
 pname:'手机',
 price:5400
 },
 {
 lid:3,
 pname:'iPad',
 price:6400
 }
]

router.get('/', function(req, res, next) {
 res.send(products)
});

router.get('/details', function(req, res, next){
 var lid = req.query.lid
 res.send(products[lid])
})

module.exports = router;
// user.js
var express = require('express');
var router = express.Router();

/* GET users listing. */
router.post('/', function(req, res, next) {
 var uname = req.body.uname
 var upwd = req.body.upwd
 if(uname === 'lili' && upwd === '123456'){
 res.send('登陆成功')
 }else{
 res.send({
  code: 0,
  message: '用户名或密码错误'
 })
 }
});

module.exports = router;

3.注:

为避免跨域,可将前端代码和后端同时放在一个项目内,使用同一地址,再发送请求调取接口

到此这篇关于利用promise及参数解构封装ajax请求的文章就介绍到这了,更多相关promise封装ajax请求内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

您可能感兴趣的文章:js使用Promise实现简单的Ajax缓存用Promise解决多个异步Ajax请求导致的代码嵌套问题(完美解决方案)

  • 本文相关:
  • 利用iframe实现ajax跨域通信的实现原理(图解)
  • 原生ajax瀑布流demo分享(必看篇)
  • ajax 入门基础之 xmlhttprequest对象总结
  • ajax长连接项目案例
  • ajax 数据库中随机读取5条数据动态在页面中刷新
  • 用ajax读取xml格式的数据
  • ajax方式实现注册功能(提交数据到后台数据库完成交互)
  • ajax 缓存 问题 requestheader
  • ie8用ajax访问不能每次都刷新的问题
  • layui ajax请求给下拉框赋值的实例
  • 怎么将es6的Promise和Ajax封装起来使用
  • ajax为什么要promise封装
  • 原生ajax为什么要promise封装?
  • 怎么封装一个公共的ajax请求
  • 如何自己封装一个ajax函数
  • 利用AJAX技术在服务器和客户端交互数据时,可通过...
  • ajax异步请求获取后台数据,java mvc 后台应该如何...
  • js面向对象封装ajax
  • jquery ajax问题:当url中参数太多时,怎么用param...
  • EXT中Ajax请求参数如何封装成JAVA对象的?
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全javascriptasp.netphp编程ajax相关正则表达式asp编程jsp编程编程10000问css/htmlflex脚本加解密web2.0xml/rss网页编辑器相关技巧安全相关网页播放器其它综合dart首页js使用promise实现简单的ajax缓存用promise解决多个异步ajax请求导致的代码嵌套问题(完美解决方案)利用iframe实现ajax跨域通信的实现原理(图解)原生ajax瀑布流demo分享(必看篇)ajax 入门基础之 xmlhttprequest对象总结ajax长连接项目案例ajax 数据库中随机读取5条数据动态在页面中刷新用ajax读取xml格式的数据ajax方式实现注册功能(提交数据到后台数据库完成交互)ajax 缓存 问题 requestheaderie8用ajax访问不能每次都刷新的问题layui ajax请求给下拉框赋值的实例jquery ajax 向后台传递数组参数ajax readystate的五种状态详解ajax中的async属性值之同步和异步jquery实现ajax定时刷新局部页面ajax传递多个参数具体实现ajax获取数据中文乱码问题最简单jquery ajax中使用serialize()方ajax获取数据然后显示在页面的实自己动手打造ajax图片上传(网上没ajax 缓存问题的两种解决方法(ieajax实现点击不同的链接让返回的内容显示ajax局部刷新一个div下jsp内容的方法ajax 把拿到的后台数据在页面中渲染的实例ajax的json传值方式在jsp页面中的应用ajax校验是否重复的实现代码解决ajax返回验证的时候总是弹出error错误通过ajax方式上传文件使用formdata进行ajajax技术制作得在线歌词搜索功能ajax引擎 ajax请求步骤详细代码asp简单的ajax留言板
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved