/*
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基础的更多相关文章

  1. 原生AJAX基础讲解及兼容处理

    原文:原生AJAX基础讲解及兼容处理 AJAX = Asynchronous JavaScript and XML (异步的JavaScript和XML). AJAX不是新技术 ,但却是热门的技术.它 ...

  2. 浅谈AJAX的基本原理和原生AJAX的基础用法

    一.什么是AJAX? AJAX,即"Asynchronous Javascript And XML",翻译为异步的JavaScript和XML,是一种创建交互式网页应用的网页开发技 ...

  3. JS原生ajax与Jquery插件ajax深入学习

    序言: 近来随着项目的上线实施,稍微有点空闲,闲暇之时偶然发现之前写的关于javascript原生xmlHttpRequest ajax方法以及后来jquery插件ajax方法,于是就行了一些总结,因 ...

  4. 【Java EE 学习 31】【JavaScript基础增强】【Ajax基础】【Json基础】

    一.JavaScript基础增强 1.弹窗 (1)使用window对象的showModelDialog方法和showModelessDialog方法分别可以弹出模式窗口和非模式窗口,但是只能在IE中使 ...

  5. python_way day21 Django文件上传Form方式提交,原生Ajax提交字符处啊,Django文件上传之原生Ajax方式、jQuery Ajax方式、iframe方式,Django验证码,抽屉示例,

    python_way day21 1.Django文件上传至Form方式 2.原生Ajax文件上传提交表单 使用原生Ajax好处:不依赖jquery,在发送一个很小的文件或者字符串的时候就可以用原生A ...

  6. [译]脱离jQuery,使用原生Ajax

    脱离jQuery,使用原生Ajax 标签: Ajax translate 英文出处:<A Guide to Vanilla Ajax Without jQuery> 翻译: 刘健超 J.c ...

  7. jQuery基础---Ajax基础教程(二)

    jQuery基础---Ajax进阶 内容提纲: 1.加载请求 2.错误处理 3.请求全局事件 4.JSON 和 JSONP 5.jqXHR 对象 发文不易,转载请注明出处! 在 Ajax 基础一篇中, ...

  8. 原生AJAX请求教程

    ajax 即 Asynchronous Javascript And XML,AJAX 不是一门的新的语言,而是对现有持术的综合利用.本质是在 HTTP 协议的基础上以异步的方式与服务器进行通信. 异 ...

  9. 原生Ajax使用

    Ajax基础 Ajax(Asynchronous JavaScript And XML)概念:通过XMLHttpRequest对象向服务器提出请求并处理响应,进行页面的局部更新. AJAX都有哪些优点 ...

随机推荐

  1. splinter(python操作浏览器魔魁啊)

    from splinter import Browser def main(): browser = Browser() browser.visit('http://google.com') brow ...

  2. 将golang程序注册为windows服务

    1.go get  bitbucket.org/kardianos/service 2.参考里面的exmaple,就可以了 我承认我有点蛋疼

  3. NSDate管理日期和时间

    //时间初始化        NSDate *date = [[NSDate alloc]initWithString:@"2010-01-01 23:59:59 +0900"]; ...

  4. object to 字符串json

    package com.beijxing.TestMain; import com.beijxing.entity.Student; import com.google.gson.Gson; impo ...

  5. PowerDesigner 16.5 反向PostgreSQL9.01 中 Unable to list the columns. SQLSTATE = 22003不良的类型值 short : t 解决方法

    Database➙Edit Current DBMS… General tab➙PostgreSQL 9.x➙Script➙Objects➙Column➙SqlListQuery or Tools➙R ...

  6. sizeof(结构体) = ?

    关于结构体大小怎样计算的文章,我想网上一搜到处都有人总结,本人之所以在此基础上还要发表这样的文章是想用最简单的计算方法来总结前人给出的结论,以致我们在以后在对结构体相关编程中不会陷入字节对齐的陷阱中. ...

  7. jquery实现动态添加html代码

    先看下思导图,整体了解下,然后我们再来学习. 现在我们来看一下几段代码,然后根据这几段代码我们来学习一下如何正确的学习动态添加html. 一.html()方法 html函数的作用原理首先是移除目标元素 ...

  8. SQL SERVER 分页查询

    Sqlserver数据库分页查询一直是Sqlserver的短板. 但现在不是了. 自从有了它. 一口气上十楼. 官方语法说明示例: https://technet.microsoft.com/zh-c ...

  9. iOS8以后自动计算cell的高度

    前提: 1.iOS系统>=8 2.cell中的每个控件布局固定,不含一些动态的模块,但是可以含有label的变化 可以采用tableView自动计算cell的高度 首先设置tableView的属 ...

  10. qt中添加Q_OBJECT报错的问题

    在qt编写的过程中添加Q_OBJECT后发现老是报错的问题 编译后老是报undefined reference to vtable for "xxx"的错误,后来发现在xxx.pr ...