Ajax深入理解
Ajax Asynchronous JavaScript and XML 异步的JavaScript和XML
ajax通过与后台服务器进行少量的数据交换,ajax可以使页面实现异步更新,即不需要重新加载整个页面
1.创建XMLHttpRequest对象
所有现代浏览器
var xhr = new XMLhttpRequest();
老版本的 ie
var xhr = new ActiveXObect("Micrsoft.XMLHTTP");
2.向服务器发送请求
xhr.open(method,url,async) //method 可选 GET / POST
//url 文件在服务器上的位置
//async true(异步),false(同步)
xhr.send(string) //仅适用于POST请求 将请求发送到服务器
GET与POST优缺点
1. post可以发送更多的内容
2. get明确的query有利于链接分享
3. post的请求不能进行缓存
简单的GET请求 ajax是在服务器端的请求 所以本地模拟一个
我使用的是node 切换到本地对应目录
$ npm install --global http-server //node包管理工具下载
$ http-server //运行http-server
服务器挂起了
html
<span>你好</span>
<button onclick="lodMessage()">change</button>
js
var lodMessage = () => {
console.log('发送请求');
var xhr = new XMLHttpRequest();
console.log(xhr.readyState);
xhr.onreadystatechange = function () {
console.log(xhr.readyState);
console.log(xhr.status);
if (xhr.readyState == 4 && xhr.status <=200 && xhr.status <= 300 || xhr == 304) {
document.getElementsByTagName('span')[0].innerHTML = xhr.responseText;
}
}
xhr.open('GET', 'http://127.0.0.1:8080/demo.php', true);
xhr.send();
}
demo.php
<?php
echo 'changed';
?>
这样打开本地的 localhost:8080/01-get.html 即可 点击按钮 就可以显示在 demo.php里面请求回来的数据
点击前
点击后

当我改变demo.php里的内容
<?php
echo 'changedededededed';
?>
再次刷新页面后再次点击 button 发送请求 期望得到改变后的demo.php的值

然而并没有的到更新后的数据 (这种情况 不是每次都会碰到 , 但是的确碰到了)
这是因为 两次请求,浏览器将数据缓存下来了
解决办法 (让请求不一样) //缓存可以在服务器端进行配置 Last-Modified
改变 xhr.open 给url加一个唯一的id

这样 浏览器就不会使用缓存的数据
GET时传一些数据

POST请求
更换open方法的method
xhr.open('POST','http://127.0.0.1:8080/demo.php',true)
添加请求头规定想要发送的数据类型
xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded')
http的content-type还有好多种 http://tool.oschina.net/commons
send方法中添加数据
xhr.send('name=weibin&age=12');
xhr.status与xhr.readyState的值以及其意义
//xhr.status
1** 消息
2** 访问成功
3** 重定向 301永久重定向 302临时重定向 304重定向到磁盘(缓存)
4** 客户端错误
500 服务端错误
502 错误的访问
503 服务器不可用
6++ 自行拓展
//xhr.readyState 0 请求未初始化
1 服务器链接简历
2 发送send请求
3 内容下载
4 完成
ajax 默认是不能请求跨域的资源的
请求跨域资源的方法 关于jsonp (基本用不到)
http默认是允许跨域访问的,而我们不能访问是因为浏览器的限制,例如简单的get、post方法使用curl中执行就是可以得。
可以通过修改http的请求头中 white-head、content-type、method 等参数 实现多种ajax方法、头、内容的跨域访问。
ajax2.0 上传文件
ajax2.0 可以支持上传fromData对象,
experss结合原生ajax实现文件拖拽上传,进度条demo
https://www.cnblogs.com/96weibin/p/12169016.html
Ajax深入理解的更多相关文章
- Ajax初步理解
最近在项目中经常会使用Ajax技术,用法上倒是熟练了,但是只知其然,不知其所以然,抽时间读了读JavaScript高级程序设计中关于Ajax的介绍有了些初步的理解,在此总结一下. 什么是Ajax Aj ...
- Ajax的理解
初学JS,一直认为Ajax是个很高级的.不可亵玩的东西.这两天怀着忐忑的心情接触了一下它, 感觉它并没有想象中的那么难理解. 其实,Ajax就是浏览器端向服务器请求资源的一个对象(方法). 就跟打电话 ...
- ajax的理解和运用
AJAX : Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. 譬 ...
- 面试时怎样回答:你对原生ajax的理解
很多人跟我一样用习惯了jq封装好的$.ajax,但是面试时,原生ajax是很多面试官喜欢问的问题,今天再查资料,打算好好整理一下自己理解的原生ajax. 首先,jq的ajax:一般我常用的参数就是这些 ...
- 有关ajax的理解;
jQuery是JavaScript封装的一个库,里面封装了一些便于我们使用的方法,同时还有$.ajax()的一些理解需要我们更加深入了解 ajax简介: 实现后台与前台交互的功能或方法就叫做ajax: ...
- input屏蔽历史记录 ;function($,undefined) 前面的分号是什么用处 JSON 和 JSONP 两兄弟 document.body.scrollTop与document.documentElement.scrollTop兼容 URL中的# 网站性能优化 前端必知的ajax 简单理解同步与异步 那些年,我们被耍过的bug——has
input屏蔽历史记录 设置input的扩展属性autocomplete 为off即可 ;function($,undefined) 前面的分号是什么用处 ;(function($){$.ex ...
- ajax的理解与工作流程
一.什么是ajax ajax是一种异步通信技术.在ajax出现之前,客户端与服务端之间直接通信.引入ajax之后,客户端与服务端加了一个第三者--ajax.有了ajax之后,通过在后台与服务器进行少量 ...
- $Ajax简单理解
关于web开发的可能我们不能或缺的利器就是$Ajax,我们这里就不具体的将里面的原理(如果大家有时间的话可以好好的看看javascript里面的权威指南)里面讲的比较详细了 这里就在不说了.今天我们就 ...
- 对Ajax的理解
一.Ajax的工作原理: 1. Ajax的机制是:完成异步请求,实现页面的局部刷新. 2. 发送异步请求:通过xmlhttprequest方法. 3. 浏览器向服务器发送异步请求: 服务器接收处理请求 ...
- 系统前端基本文件+ajax部分理解
静态页面: 一.static: css dist fonts images js model 二.templates: html ajax搜索操作: <html> <head> ...
随机推荐
- 获取cookies的简单代码(总结待续)
Cookie[] cookies = request.getCookies(); Cookie cookie = null; for (int i = 0; i < cookies.length ...
- 使用JQuery.Validate插件来校验页面表单有效性
使用JQuery.Validate插件来校验页面表单有效性1. [代码] 常见的注册表单元素 <form action="#" method="post" ...
- C++数组作为函数参数的几个问题(转)
本文需要解决C++中关于数组的2个问题:1. 数组作为函数参数,传值还是传址?2. 函数参数中的数组元素个数能否确定? 先看下面的代码. #include <iostream> using ...
- maven实战(1)-- maven仓库
maven仓库配置 转自:http://blog.csdn.net/dongnan591172113/article/details/7685164 1.两类仓库 1.1本地仓库(local repo ...
- 【转】[钉钉通知系列]Jenkins发布后自动通知
转载请注明出处:https://www.cnblogs.com/jianxuanbing/p/7211006.html 阅读目录 一.前言 二.使用钉钉推送的优势 三.配置 一.前言 最近使用Jenk ...
- Bootstrap-CSS:响应式实用工具
ylbtech-Bootstrap-CSS:响应式实用工具 1.返回顶部 1. Bootstrap 响应式实用工具 Bootstrap 提供了一些辅助类,以便更快地实现对移动设备友好的开发.这些可以 ...
- vue+webpack 打包文件 404 页面空白
最近用vue-cli+vue-router+webpack建立项目,其中的遇到的三个问题,整理如下: vue-cli+ webpack 建立的项目,cnpm run build 打包项目之后,需要放在 ...
- MySQL主从详细安装步骤
网站: 程序在:web服务器192.168.1.100上面 数据库在:MySQL服务器192.168.1.123上面 实现目的:增加一台MySQL备份服务器(192.168.1.124),作为MySQ ...
- MariaDB + Visual Studio 2017 环境下的 ODBC 入门开发
参考: Easysoft公司提供的ODBC教程 微软提供的ODBC文档 环境: Windows 10 x64 1803 MariaDB TX 10.2.14 x64 MariaDB ODBC Conn ...
- 004--linux命令tar 软硬链接
一.tar命令介绍: -c:创建一个新的tar文件 -t:列出tar文件中目录的内容 -x:从tar文件中抽取文件 -f:指定归档文件或磁带(也可能是软盘)设备(一般都要选) -v:显示所打包的文件的 ...