AJAX的问题
1.什么是AJAX
AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。
AJAX:Asynchronous Javascript And XML,异步的JS和XML。
2002年,Google在搜索引擎中提出了“Google Suggest”效果,把使用的技术命名为“AJAX”,为了避免浏览器中出现“一片惨白”影响浏览体验。
实现原理:在客户端浏览网页内容的同时,服务器在提供最新的内容,局部更新在页面中——无提交无刷新的页面内容局部更新技术。
AJAX应用涉及到的技术:HTML、CSS、JS、DOM、XML、HTTP协议等——纯前端技术,需要与Web服务器交互。
2.浏览器发起HTTP请求的两种方式:
(1)同步请求:地址栏、表单提交、超链接跳转、JS跳转
(2)异步请求:使用XHR对象
3.使用XHR发起HTTP请求的步骤
1 创建xhr对象
var xhr = new XMLHttpRequest();
2 连接到服务器
xhr.open('GET', 'x.php', true);
3 发送请求消息
xhr.send( null / 'k=v&k=v' );
4 监听xhr的状态改变事件
xhr.onreadystatechange = function(){
if(xhr.readyState===4){ //响应消息接收完成
if(xhr.status===200){ //响应完成且成功
}else{ //响应完成但有问题
}}}
4.XHR对象成员属性:
- readyState:0 就绪状态,随着请求-响应的进行自动改变
- response:""
- responseText:"" 响应消息主体,readyState变为3才有值
- responseType:""
- responseURL:""
- responseXML:null 响应消息主体,readyState变为3才有值
- status:0 响应状态码,readyState变为2才有值
- statusText:"" 原因短句,readyState变为2才有值
- timeout:0
- DONE:4 readyState可取值之一,响应消息接收完成
- HEADERS_RECEIVED:2 readyState可取值之一,开始接收响应消息头部
- LOADING:3 readyState可取值之一,开始加载响应消息主体
- OPENED:1 readyState可取值之一,XHR已经打开到服务器的连接
- UNSENT:0 readyState可取值之一,请求消息尚未发送
5.XHR对象成员方法:
- getAllResponseHeaders:getAllResponseHeaders()
- getResponseHeader:getResponseHeader() 读取响应头部
- setRequestHeader:setRequestHeader() 设置请求头
- open:open() 打开到服务器的连接
- send:send() 发送请求消息
6.使用Microsogt浏览器IE(6以下):
Microsogt浏览器IE(6以下)使用MSXML解析器处理XML,如果编写的AJAX应用程序并不简单,根据IE中安装的JacaScript技术的版本不同,MSXML实际上有两种不同的版本,因此必须对这两种情况分别编写代码,如:
var xml=false;
try{
xml=new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
xml=new ActiveXObject("Microsoft.XMLHTTP");
} catch(e2){
xml=false;
}
}
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
和
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
这两行代码基本上就是尝试使用一个版本的MSXML创建对象,如果失败则使用另一个版本创建该对象。
或者官方文档
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
AJAX的问题的更多相关文章
- jQuery之ajax实现篇
jQuery的ajax方法非常好用,这么好的东西,你想拥有一个属于自己的ajax么?接下来,我们来自己做一个简单的ajax吧. 实现功能 由于jq中的ajax方法是用了内置的deferred模块,是P ...
- Ajax及跨域
概念 Ajax Ajax,Asynchronous JavaScript and XML,字面意思:异步的 JavaScript 和 XML,是指一种创建交互式网页应用的网页开发技术. 用于异步地去获 ...
- 一个粗心的Bug,JSON格式不规范导致AJAX错误
一.事件回放 今天工作时碰到了一个奇怪的问题,这个问题很早很早以前也碰到过,不过没想到过这么久了竟然又栽在这里. 当时正在联调一个项目,由于后端没有提供数据接口,于是我直接本地建立了一个 json ...
- ABP文档 - Javascript Api - AJAX
本节内容: AJAX操作相关问题 ABP的方式 AJAX 返回信息 处理错误 HTTP 状态码 WrapResult和DontWrapResult特性 Asp.net Mvc 控制器 Asp.net ...
- ajax异步请求
做前端开发的朋友对于ajax异步更新一定印象深刻,作为刚入坑的小白,今天就和大家一起聊聊关于ajax异步请求的那点事.既然是ajax就少不了jQuery的知识,推荐大家访问www.w3school.c ...
- 调用AJAX做登陆和注册
先建立一个页面来检测一下我们建立的用户名能不能用,看一下有没有已经存在的用户名吗 可以通过ajax提示一下 $("#uid").blur(function(){ //取用户名 va ...
- Ajax 概念 分析 举例
Ajax是结合了访问数据库,数据访问,Jquery 可以做页面局部刷新或者说是页面不刷新,我可以让页面不刷新,仅仅是数据的刷新,没有频繁的刷页面,是现在比较常用的一种方式做页面那么它是怎么实现页面无刷 ...
- ajax
常见的HTTP状态码状态码:200 请求成功.一般用于GET和POST方法 OK301 资源移动.所请求资源移动到新的URL,浏览器自动跳转到新的URL Moved Permanently304 未修 ...
- 学习笔记之MVC级联及Ajax操作
由于刚转型到MVC,MVC的架构模式很多不是很清楚,比如今天就想做个级联的操作,因为之前的ASP.NET的方式是通过:控件-->添加事件-->后台编写级联事件进行触发,但是这个MVC就不同 ...
- javascript表单的Ajax 提交插件的使用
Ajax 提交插件 form.js 表单的下载地址:官方网站:http://malsup.com/jquery/form/ form.js 插件有两个核心方法:ajaxForm()和ajaxSubmi ...
随机推荐
- DateUtils
package com.vcredit.ddcash.batch.util; import java.text.SimpleDateFormat;import java.util.Calendar;i ...
- Maven详解之聚合与继承
说到聚合与继承我们都很熟悉,maven同样也具备这样的设计原则,下面我们来看一下Maven的pom如何进行聚合与继承的配置实现. 一.为什么要聚合? 随着技术的飞速发展和各类用户对软件的要求越来越高, ...
- BZOJ1857[SCOI2010]传送带
题目大意:平面上两条线段,一个人从一条线段的一个点到另一条线段的一个点,最小时间是多少 路径肯定是在一条线段上走一段,然后走平面,最后再走另一条线段,那么需要确定的就是在两条线段上走的距离,其他暴力算 ...
- WEB应用中的普通Java程序如何读取资源文件
package cn.itcast; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.Serv ...
- 使用 JavaScript 实现链表
代码: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8 ...
- 字节流与字符流的区别&&用字节流好还是用字符流好?
字节流: (A)FileOutputStream(File name) 创建一个文件输出流,向指定的 File 对象输出数据. (B)FileOutputStream(FileDescriptor) ...
- 阅读廖雪峰老师git教程笔记
1.首先git是目前世界上最先进的分布式版本控制系统之一.所谓版本控制是针对工作中一些普遍的现象的. 比如,你写一份文档,期间,不断的改善,每次修改都会进行备份,久而久之,会有很多版本的同一份文档,但 ...
- Linked List Cycle II || LeetCode
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * } ...
- 获取windows磁盘的可用空间函数
<?php /* *获取某个磁盘的剩余空间 *$param 关联数组,下标是哪个盘,单位,可以是B,KB,MB,GB *可以设置获取多个磁盘,例如:array('C'=>'KB','D'= ...
- PHP输出当前进程所有变量 / 常量 / 模块 / 函数 / 类
<?php /* 不知道怎么打印某个函数的参数和相关分类类型的所有函数 以下函数如果没有参数,返回的都是一个数组get_defined_functions() 获取所有已经定义的函数get_de ...