Ajax: (Asynchronous JavaScript and XML,异步JavaScript与XML技术)是一种有效利用JavaScript和DOM的操作.

与传统HTTP请求的区别: Ajax允许只更新页面的一部分,因此减少了响应中传输的数据量

Ajax的API: Ajax与服务器进行通信,可以使用JavaScript中原生的XMLHttpRequest对象.

使用ajax从服务器获取数据:

let xhr = new XMLHttpRequest();
let url = 'http://192.168.1.13:8080/PowePlant...';xhr.onreadystatechange = () => {if( xhr.readyState == 4) {console.log(xhr.status);console.log(xhr.responseText);}
}
xhr.open("post", url, true);
xhr.send(null);




上面是在本地运行的网页中请求的数据,请求的数据在另外一台主机(192.168.1.13,端口8080)
属于跨域请求:

// 注:在Firefox3.5+、Safari 4+、Chrome、IOS版的Safari和Android平台中的Webkit都通过XMLHttpRequest对象实现了对
// CORS(跨域资源共享)的原生支持,只用在xhr.open()方法中传入绝对URL即可.

使用post像服务器传递参数:

let xhr =  new XMLHttpRequest();
let url = "http://192.168.1.13:8080/path"
xhr.onreadystatechange = () => {if(xhr.readyState === 4) {console.log(xhr.responseText)} else {console.log('Request was unsuccessful: " + xhr.status)}
}
xhr.open("post", url, true);
// 创建请求的参数
let myData= new FormData();
myData.append("year", "2019");
myData.append("month", "6");// 发送请求
xhr.send(myData);



注意到,以上的例子中有好多代码是重复的,并且模式是固定的。故可以做如下封装:

let myPost = (url, params) => {let promise = new Promise(( resolve, reject) => {// 处理参数let myData = new FormData();for (let key of Object.keys(params)) {myData.append(key, params[key]);}let xhr = new XMLHttpRequest();xhr.onreadystatechange = () => {if (xhr.readyState !== 4) {   // 此时会有4个状态,当为4时,表示成功return } else {  // 请求成功if(JSON.parse(xhr.responseText).code === 200) {resolve(xhr.responseText)} else {reject(xhr.status);}}}xhr.open("post", url, true);xhr.send(myData);})return promise
}// 使用定义的myPost
let url = "http://192.168.1.13:8080/....";
let params = {year: "2019",month: "7",powerPlantId: "010102"
}
myPost(url, params).then(function(res) {console.log("i promise: ", res);
}, function(err) {console.err("i`m not promise: ", err):
})


参考《图解HTTP》P182
参考《JavaScript高级程序设计》(第3版)P573~P579
参考《ES6标准入门》(第3版) P276

javascript --- 使用ajax与服务器进行通信相关推荐

  1. [转]掌握Ajax 第 2 部分: 使用 JavaScript 和 Ajax 发出异步请求 [IBM]

    转自:http://www.ibm.com/developerworks/cn/xml/wa-ajaxintro2/ 掌握 Ajax,第 2 部分: 使用 JavaScript 和 Ajax 发出异步 ...

  2. 掌握 Ajax,第 2 部分: 使用 JavaScript 和 Ajax 发出异步请求

    转http://www.ibm.com/developerworks/cn/xml/wa-ajaxintro2/ 掌握 Ajax,第 2 部分: 使用 JavaScript 和 Ajax 发出异步请求 ...

  3. 【JavaScript】Ajax

    文章目录 1. 前后端交互 2. Ajax 2.1 Ajax概述 2.2 Ajax如何工作 2.3 XMLHttpRequest对象 2.4 使用Ajax eg:使用ajax实现页面的数据通过Node ...

  4. [js点击]JavaScript之Ajax技术02

    事件监听接口 XMLHttpRequest第一版,只能对onreadystatechange这一个事件指定回调函数.该事件对所有情况作出响应. XMLHttpRequest第二版允许对更多的事件指定回 ...

  5. [js点击]JavaScript之Ajax技术之02

    事件监听接口 XMLHttpRequest第一版,只能对onreadystatechange这一个事件指定回调函数.该事件对所有情况作出响应. XMLHttpRequest第二版允许对更多的事件指定回 ...

  6. jquery的Ajax技术和PHP通信

    jquery的Ajax技术和PHP通信      为了更好的用户体验和实时交互,有时候我们需要要到ajax技术来实现和后台服务器的数据交换.而jQuery的ajax技术是我认为是最简单的,在开发过程中 ...

  7. 前端3DOM编程3——Ajax和服务端通信

    1.通信基础    2.HTTP协议    3.Ajax    4.cookie 六.Ajax和服务端通信 1.通信基础 (1)Web服务器搭建 服务器是一台24h不断电.不关机,提供某种服务(文件. ...

  8. 使用$.ajax向服务器发送请求

    使用$.ajax向服务器发送请求 html <!DOCTYPE html> <html> <head> <meta charset="UTF-8&q ...

  9. promise的应用和在VUE中使用axios发送AJAX请求服务器

    promise 用promise对函数封装: 原来的代码: <!DOCTYPE html> <html> <head><title>vue demo&l ...

最新文章

  1. alpine linux docker容器时区修改
  2. php mysql数据库简介,mysql数据库
  3. 【必看】Linux 系统的备份恢复
  4. 推荐策略产品经理:剖析协同过滤(千人千面推荐的核心 )
  5. Calibre-免费开源的“一站式”的电子书管理阅读格式转换软件
  6. py 的 第 8 天
  7. WINCE恢复默认HIVE注册表的方法
  8. 方丹丹(1981-),女,就职于宁波市智慧城市规划标准发展研究院。
  9. gensim训练word2vec并使用PCA实现二维可视化
  10. Ubuntu 出现 Invalid operation update 或 Invalid operation upgrade的解决办法
  11. python核心编程笔记--chapter2
  12. matlab中fft定点运算,可用于嵌入式计算的定点FFT算法 (转载)
  13. matlab实现螺旋谱分解,MATLAB实现EMD分解及希尔伯特谱分析
  14. 天涯 大神 kkndme 房地产 调控
  15. 奥克兰计算机科学专业世界排名,新西兰计算机专业大学排名
  16. sox处理mp3_sox 转码 amr转MP3
  17. 4 个方法养成大神级 “反内耗“ 体质
  18. 柿饼UI入门课程第一周作业
  19. 前端请求接口报405错误
  20. DotEPUB:一键将网页转换成 EPUB 格式电纸书

热门文章

  1. 笔记本屏幕出现横条纹_笔记本支架+拓展坞+立式无线充:给你的桌面一个简单的品质升级...
  2. mockito mock void方法_Spock如何模拟抽象类方法
  3. asp.net mvc项目实例_降龙-第13章:MVC开发准备
  4. 如何用python制作九九乘法表_Python一行代码给儿子制作九九乘法表
  5. android home键后计时拉起app_使用React Native完成App软件
  6. 走进LWRP(Universal RP)的世界
  7. Unity将来时:IL2CPP是什么?
  8. 微服务深入浅出(7)-- 网关路由Zuul
  9. 解除服务器端口号占用及服务器端口号的修改
  10. centos 安装软件