原生ajax基础
/*
ajax对象的成员
常用属性:
responseText:以字符串形式接收服务器端返回的信息
responseXML:以Xml Document对象形式接收服务器返回的信息
readyState:返回当前请求的状态
0:刚创建ajax对象
1:已经调用open方法
2:已经调用send方法
3:已经返回部分数据
4:请求完成,数据返回完整
onreadystatechange:事件,当ajax状态readyState发生变化的时候要触发执行
【为了获得较多的状态,最好在创建好ajax对象后就设置
最多可以感知1/2/3/4 四种状态】
status:返回当前请求的http状态码【200--ok 304--请求缓存 404--没有此页面 403--禁止访问】
statusText:返回当前请求的响应行为码
常用方法;
open() 创建新的http请求
send() 把请求发送给服务端
abort() 取消当前请求
*/
1.创建ajax对象
主流浏览器方式
火狐、谷歌、苹果、Safari、Opera包括IE7以上版本的浏览器
var xhr = new XMLHttpRequest();
IE(6/7/8)方式
var xhr = new ActiveXObject("Microsoft.XMLHTTP");//最原始的方式
var xhr = new ActiveXObject("Msxml2.XMLHTTP");//升级
var xhr = new ActiveXObject("Msxml2.XMLHTTP.3.0");//升级
var xhr = new ActiveXObject("Msxml2.XMLHTTP.5.0");//升级
var xhr = new ActiveXObject("Msxml2.XMLHTTP.6.0");//IE维护的最高版本
2.发起对服务器的请求
//浏览器方式请求:打开浏览器,输入请求地址,敲回车发送请求
//给ajax设置事件,接收服务器端发来的请求
xhr.onreadystatechange = function(){
if(readyState==4){
console(xhl.responseText);
}
}
//创建新的http请求(并设置请求地址)
//open(请求方式get/post,url请求地址)
xhr.open("get","XX.php");
//发送请求
//send(get-null/post-给服务器传递的信息)
xhl.send(null);
3.
var nm = document.getElementById("username").value;
ajax的get请求需要注意两个地方
//xhr.open("get","xx.php?name="+nm+"&addr=beijing")
①在url地址后面以请求字符串(传递的get参数信息)形式传递数据
②对"中文"、=、&等特殊符号处理
//在php里边可以用函数urlencode()/urldecode()对特殊符号进行编码、反编码处理
//在JavaScript里面可以通过encodeURIComponent()对传递的特殊符号(例如:$、=等)进行编码处理
//同时对"中文"也会进行编码处理
nm = encodeURIComponent(nm);
encodeURIComponent()编码后的信息是%后接两个十六进制数
ajax的post请求需要注意的四个地方
//var info = "name="+nm+"&age=23";
//xhr.send(info);
①给服务器传递数据需要调用send(请求字符串数据)方法
//以下setRequestHeader()方法必须要在open()方法后调用
//xhr.setRequestHeader("content-type","application/x-www-form-urlencoded")
②调用方法setRequestHeader()把传递的数据组织为xml格式(模仿form表单传递数据)
③传递的中文信息无需编码,像&、=等仍需编码
④该方式请求的同时也可以传递get参数信息,同时使用$_GET接收该信息
5.同步、异步
ajax对象.open(方式 get/post , url地址 , [异步true]同步false);
ajax是可以与服务器进行(异步或同步)交互的技术之一。
异步:同一个时间点允许执行多个进程。
同步:同一个时间点只允许执行一个进程。
6.浏览器对动态程序文件缓存的处理解决:
① 给请求的地址设置随机数【推荐】
②给动态程序设置header头信息,禁止浏览器对其缓存
7.对xml的对象的接收和处理
ajax负责去服务器请求xml信息,使用responseXML属性接收
js里面的DOM技术负责处理xml信息(与处理html方式一致)
document/普通元素对象.getElementByTagName();
8.
//在JavaScript里边,把字符串"string"变为对象"object"
var obj = "{name:"kitty",age:5}";
//eval(字符串参数) 字符串参数变为表达式运行
eval("var cat ="+obj);//eval("var cat = {name:"kitty",age=5}")
console.log(cat);
9.FormData使用注意
①每个表单域必须有name属性
②不能设置setRequestHeader头
③特殊符号无需编码
④在form标签里边无需设置enctype="multipart/form-data"属性(即便有上传文件域也不需要设置)
(无刷新上传附件,FormData可以收集上传的文件域信息)
10.ajax对象->upload->onprogress
ajax对象有成员属性upload,其也是一个对象,该对象有onprogress属性。该属性是一个"事件"。该事件每间隔0.1秒就执行一次,执行的过程中会感知当前的附件上传情况,例如可以感知附件的"总大小",目前"已上传大小"等相关信息。
原生ajax基础的更多相关文章
- 原生AJAX基础讲解及兼容处理
原文:原生AJAX基础讲解及兼容处理 AJAX = Asynchronous JavaScript and XML (异步的JavaScript和XML). AJAX不是新技术 ,但却是热门的技术.它 ...
- 浅谈AJAX的基本原理和原生AJAX的基础用法
一.什么是AJAX? AJAX,即"Asynchronous Javascript And XML",翻译为异步的JavaScript和XML,是一种创建交互式网页应用的网页开发技 ...
- JS原生ajax与Jquery插件ajax深入学习
序言: 近来随着项目的上线实施,稍微有点空闲,闲暇之时偶然发现之前写的关于javascript原生xmlHttpRequest ajax方法以及后来jquery插件ajax方法,于是就行了一些总结,因 ...
- 【Java EE 学习 31】【JavaScript基础增强】【Ajax基础】【Json基础】
一.JavaScript基础增强 1.弹窗 (1)使用window对象的showModelDialog方法和showModelessDialog方法分别可以弹出模式窗口和非模式窗口,但是只能在IE中使 ...
- python_way day21 Django文件上传Form方式提交,原生Ajax提交字符处啊,Django文件上传之原生Ajax方式、jQuery Ajax方式、iframe方式,Django验证码,抽屉示例,
python_way day21 1.Django文件上传至Form方式 2.原生Ajax文件上传提交表单 使用原生Ajax好处:不依赖jquery,在发送一个很小的文件或者字符串的时候就可以用原生A ...
- [译]脱离jQuery,使用原生Ajax
脱离jQuery,使用原生Ajax 标签: Ajax translate 英文出处:<A Guide to Vanilla Ajax Without jQuery> 翻译: 刘健超 J.c ...
- jQuery基础---Ajax基础教程(二)
jQuery基础---Ajax进阶 内容提纲: 1.加载请求 2.错误处理 3.请求全局事件 4.JSON 和 JSONP 5.jqXHR 对象 发文不易,转载请注明出处! 在 Ajax 基础一篇中, ...
- 原生AJAX请求教程
ajax 即 Asynchronous Javascript And XML,AJAX 不是一门的新的语言,而是对现有持术的综合利用.本质是在 HTTP 协议的基础上以异步的方式与服务器进行通信. 异 ...
- 原生Ajax使用
Ajax基础 Ajax(Asynchronous JavaScript And XML)概念:通过XMLHttpRequest对象向服务器提出请求并处理响应,进行页面的局部更新. AJAX都有哪些优点 ...
随机推荐
- 【软件工程】“谁是卧底”之NABC分析
结对编程结束之后,迎来了结队编程,经过了很长时间的思考,想到了“谁是卧底”的idea,以下是该游戏的NABC分析: N(need): 即需求,近期,内地一知名综艺节目将“谁是卧底”游戏推广到年轻人中, ...
- Django中载入javascript、css的操作
url.py中的设置: 导入模块 from django.conf import settings (r'^js/(?P<path>.*)$','django.views.static. ...
- 纯js异步无刷新请求(只支持IE)
纯js异步无刷新请求 下载地址:http://pan.baidu.com/s/1slakL1F 所以因为非IE浏览器都禁止跨域请求,所以以只支持IE. <HTML> <!-- 乱码( ...
- 基于jquery封装的颜色下拉选择框
应同事要求,花了半个小时,写了一个简单的选择颜色的下拉框控件,可以控制输入框指示结果颜色 也贴出来,说不定哪天有用 if (typeof jQuery === 'undefined') { throw ...
- ZT 北大青鸟APTECH(南京泰思特)
北大青鸟APTECH(南京泰思特)授权培训中心诚招 高级软件测试/开发培训讲师 Posted on 2008-01-14 11:38 追求卓越 阅读(590) 评论(7) 编辑 收藏 北京阿博泰克北大 ...
- Centos实现回收站机制
作为一个运维人员,在服务器上删除文件时为了方便经常会直接使用rm *.txt这类通配符,甚至为了省事加-rf参数,如果是确定的话还好,要是在删除的时候一个不留神,那事可就大了. 俗话说常在河边站哪有不 ...
- JavaScript的继承
原型继承的实现 1 简化版本 function SuperClass(){...} function SubClass(){...} SubClass.prototype=new SuperClass ...
- poj 2761 Feed the dogs (treap树)
/************************************************************* 题目: Feed the dogs(poj 2761) 链接: http: ...
- mssql
1.打开php.ini,将 ;extension=php_mssql.dll前面的分号(;)去掉,然后重启 Apache. 如果不行的话,进行第2步: 2.检查一下你的php安装目录下的ext下面有没 ...
- 准备开发一款开源NES模拟器
前几天无意见看到一些NES的开发资料,勾起了小时候暑假的无数美好回忆,做为一名码农,萌发了自己写一款模拟器的想法.一来可以加深自己对整个系统/游戏的理解,一来可以实现小时候的梦想:),希望可以坚持下来 ...