从服务器获取数据

Ajax

通过使用诸如 XMLHttpRequest 之类的API或者 — 最近以来的 Fetch API 来实现. 这些技术允许网页直接处理对服务器上可用的特定资源的 HTTP 请求,并在显示之前根据需要对结果数据进行格式化。

XHR已经面世非常之久,现在已经有了相当棒的跨浏览器支持。然而对于网页平台来说,Fetch和Promise是新近的产物,除了IE和Safari浏览器不支持,别的浏览器大多提供了支持。(现在Safari也即将为fetch和promise提供支持)。

在早期,这种通用技术被称为Asynchronous JavaScript and XML(Ajax)。

现在搜索一些东西,比如一个新产品。 主要内容将会改变,但大部分周围的信息,如页眉,页脚,导航菜单等都将保持不变。比如 Amazon

  • 页面更新速度更快
  • 每次更新都会下载更少的数据

XMLHttpRequest

const verseChoose = document.querySelector('select');
const poemDisplay = document.querySelector('pre'); verseChoose.onchange = function() {
updateDisplay(verseChoose.value);
};
function updateDisplay(verse) {
let url = verse.replace(" ", "").toLowerCase() + '.txt';
let request = new XMLHttpRequest();
request.open('GET', url);
request.responseType = 'text';
request.onload = function() {
poemDisplay.textContent = request.response;
};
request.send();
}

Fetch

const verseChoose = document.querySelector('select');
const poemDisplay = document.querySelector('pre');
//fetch()返回一个promise,它将解析从服务器发回的响应。 text() 也返回了一个 promise
verseChoose.onchange = function() {
updateDisplay(verseChoose.value);
};
function updateDisplay(verse) {
let url = verse.replace(" ", "").toLowerCase() + '.txt';
fetch(url).then(function(response) {
if(response.ok){
response.text().then(function(text) {poemDisplay.textContent = text;});
}else{
console.log('fetch error')
}
});
}
  1. fetch(url) 等同于 xhr.open('GET',url)
  2. fetch().then() 等同于 xhr.onload
  3. text() 等同于 request.responseType = 'text';
  4. response.ok 等同于 xhr.status == 200 || xhr.readyState == 4

最新文章

  1. mysql 主从同步原理
  2. Jquery实现简单到计时功能(setTimeout,setInterval)
  3. TCP定时器
  4. c#中struct和class的区别 详细[转]
  5. source命令
  6. Data Flow ->> Look up & Merge Join
  7. 如何在Ubuntu 13.04中升级到 GNOME 3.8
  8. 数据结构———KMP
  9. 9.22 noip模拟试题
  10. IOS 文件管理 2
  11. java设计模式--结构型模式--外观模式
  12. Java 使用Dom4j和JFileChooser实现xml文件的自主选择路径导出
  13. Asp.Net请求响应过程
  14. Why isn't sizeof for a struct equal to the sum of sizeof of each member?
  15. Eclipse导入项目常见问题----乱码问题03
  16. Spring的JDBC(非web程序)的简单例子
  17. sweetalert------一个非常萌的alert!
  18. Vue-admin工作整理(十二):Vuex-插件(持久化存储)
  19. 电脑小白和ta的小白电脑——Tomcat服务器
  20. Liunx/RHEL6.5 Oracle11 安装记录[缺少依赖包的解决方案]

热门文章

  1. git commit提交代码时跳过 eslint校验
  2. 腾讯云静态资源放到cos存储桶里,并开启CDN自定义域名加速
  3. sql常用系统存储过程
  4. errgroup.Group
  5. python常用的六个字符串处理方法
  6. AI-Chat问答随笔
  7. vue整体回顾
  8. iptables( < deb ufw)
  9. (0619) 电脑 传 ipad
  10. ctfshow web入门 命令执行 37-39