Linking

Capturing Life & Tech

  • 主页
  • 随笔
  • 关于我
所有文章 外链

Linking

Capturing Life & Tech

  • 主页
  • 随笔
  • 关于我

Ajax系列二-现代化的Ajax

阅读数:次 2016-02-27
字数统计: 545字   |   阅读时长≈ 2分

核心–XMLHttpRequest对象,一个专门的HTTP请求工具

使用XMLHttpRequest做Ajax请求:

如何创建该对象

标准` new XMLHttpRequest()`
低版本`IE(678)`,`new ActiveXObject('Microsoft.XMLHTTP')`;新的`jQuery`已经抛弃IE6,**程序员不应该去迁就用户的坏习惯,有时候需要逼用户改变习惯。**
1
2
3
4
5
6
7
8
9
10
11
function createXHR(){
var xhr = null;
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
} else if(window.ActiveXObject){
xhr = new ActiveXObject('Microsoft.XMLHTTP');
} else{
console.log('你的浏览器很奇怪。');
}
return xhr;
}

利用XHR发送请求来请求后台服务器资源

分析HTTP协议,请求需明确几个因素:
   1)请求方法:GET/POST/PUT/DELETE/HEAD
   2)请求哪个资源(URL)
   3)同步方式–同步/异步

如何得到请求返回结果

1
2
3
4
5
6
7
8
9
10
11
function vote(){
//1. 制造xhr
var xhr = createXHR();
//2. 打开连接
xhr.open('GET', './05-ajaxvote.php', true/false);
//3. 发送请求
xhr.send(null);
//4. 测试同步异步的差异,改true/false
//alert(xhr.responseText);
//为避免误会用
alert('123');

05-ajaxvote.php

1
2
3
4
5
6
7
8
9
10
11
12
sleep(3);//等待三秒
if(rand(1,10) < 4){
echo "0";
}else{
$votenum = file_get_contents("./vote.txt");
if ($votenum == null) {
$votenum = 0;
}
$votenum += 1;
file_put_contents('./vote.txt', $votenum);
echo "1";
}

上面的测试结果显示,true即异步时,立即alert,”你等你的,我先走了”;false即同步时,等三秒才alert,”send返回后,才是下一步”。
综上,同步代码按顺序执行,异步代码可跳过等待的代码,先执行下面的代码,再返回执行。

XHR对象在请求与响应过程中,状态会不断变化,0-4逐步变化;可以绑定一个监听函数来监听状态的变化,只要状态变化就触发某函数。

1
2
3
4
xhr.onreadystatechange = function(){
var pg = document.getElementById('progress');
pg.innerHTML += pg.innerHTML + '现在的状态是 '+ this.readyState + '<br />';
}

只管readyState == 4的状态,其他不管。

1
2
3
4
5
6
7
8
9
10
11
xhr.onreadystatechange = function(){
if(this.readyState == 4){
if(this.responseText == '1'){
document.getElementById('progress').innerHTML = '投票成功';
}else if(this.responseText == '0'){
document.getElementById('progress').innerHTML = '投票失败';
}else{
document.getElementById('progress').innerHTML = this.responseText;
}
}
}
  • 本文作者: Linking
  • 本文链接: https://linking.fun/2016/02/27/Ajax系列二-现代化的Ajax/
  • 版权声明: 版权所有,转载请注明出处!
  • ajax
  • cs

扫一扫,分享到微信

Ajax系列三-探讨XHR及POST数据
Ajax系列一-远古时代
  1. 1. 如何创建该对象
  2. 2. 利用XHR发送请求来请求后台服务器资源
  3. 3. 如何得到请求返回结果
© 2015-2026 Linking
GitHub:hexo-theme-yilia-plus by Litten
本站总访问量次 | 本站访客数人
  • 所有文章
  • 外链

tag:

  • weather
  • 需求
  • essay
  • basketball
  • olympic
  • nginx
  • APPScan
  • SQl盲注
  • xss
  • Ajax
  • ajax
  • ai
  • agent
  • openclaw
  • ccf
  • Nginx
  • HTML5
  • html5
  • hmtl5
  • sse
  • JavaScriptCore
  • Oracle
  • operation
  • Linux
  • deploy
  • Mac Office
  • markdown
  • ListView
  • GridView
  • MySQL
  • 慢查询
  • mongodb
  • 转置
  • thought
  • network
  • ubuntu
  • NetworkManager
  • RFKill
  • Netplan
  • avatar
  • cocoa
  • blog
  • Gitalk
  • container
  • macvlan
  • docker
  • oracle
  • cookie
  • patch
  • gitea
  • git
  • iOS
  • https
  • 多线程
  • bundle
  • 兼容性
  • HTTP
  • 绘图
  • cs
  • java
  • 效率
  • 快捷键
  • route
  • nodejs
  • pip
  • arcgis
  • arcgis 建模
  • 标识
  • redis
  • read
  • bookList
  • running
  • showdoc
  • disk
  • unit-test
  • D.Wade
  • thoughts
  • duoduo
  • Python
  • python
  • tomcat
  • 读书节
  • session
  • jdk
  • war
  • 加班
  • Android onclick事件监听
  • 正则
  • 手机品牌匹配
  • ntp
  • OpenLayers
  • Geoserver
  • wechat
  • 微信公众号
  • 爬虫
  • WeChat
  • 张靓颖
  • 动漫
  • vpn
  • PPT
  • MarkDown
  • plan
  • 朱赟
  • 极客时间专栏
  • 极客邦
  • 模块化
  • MVC
  • excel
  • NBA
  • kobe
  • team
  • crawler
  • 进度条
  • ssl
  • book
  • anti-stealing-link
  • Agentic Engineering
  • Vibe Coding
  • Software 3.0
  • Andrej Karpathy
  • LLM
  • Programming

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia-plus根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • GitHub Trending
  • OpenAI ChatGPT
  • Gitee码云
  • 简书
  • CSDN