通过使用ajax可以实现页面的部分动态化

ajax可以发送一个请求去服务端,而服务端则发送回一小段数据给客户端,这样就可以避免加载整个页面,因为很多时候页面只需要刷新某一部分的数据,而其他大部分体就不需要更新

ajax我用过的经验有两种,一种是js的ajax方法,一个是经过jQurey封装好的ajax方法,我想没有第三种吧。。

js的ajax使用流程:创建XMLHttpRequest对象 -> 对象向服务器进行请求 -> 服务器进行响应 ->客户端判断服务器的响应是否就绪

第一步:创建XMLHttpRequest对象

HXR = new XMLHttpRequest();

然而上面并不适用于IE5 和 IE6,所以对于这种浏览器需要用ActiveX 对象

HXR = new ActiveXObject("Microsoft.XMLHTTP");

因此我们在写第一步的时候可以先进行一下判断,判断是什么浏览,然后再进行对象的新建

var HXR;
if(window.XMLHttpRequest){
HXR = new XMLHttpRequest();//IE7或以上的主流浏览器
}
else{
HXR = new ActiveXObject("Microsoft.XMLHTTP");//IE5或6
}

第二步:发出请求

我们可以使用对象的open()和send()方法。

open(method,url,async)是规定请求类型(get,post),服务器的url,同步或者异步。

send(string)方法是放送请求,里面的参数只有方法是post才用到,因为get方法的请求参数已经在url里面了

方法 描述
open(method,url,async)

规定请求的类型、URL 以及是否异步处理请求。

  • method:请求的类型;GET 或 POST
  • url:文件在服务器上的位置
  • async:true(异步)或 false(同步)
send(string)

将请求发送到服务器。

  • string:仅用于 POST 请求

get请求使用例子:

HXR.open('GET','server.php?name=sbb&id=1',true);
HXR.send();

POST请求使用例子,如果需要添加请求信息,则要加入http表头

HXR.open('POST','server.php',true);
HXR.setRequestHeader("Content-type","application/x-www-form-urlencoded");
HXR.send("name=sbb&id=1");

第三步:服务器进行相应

这个则需要自己进行编写,可以对传过来的数据进行判断而输出对应的数据,这里就不详细写了,写个简单例子

$data = $_REQUEST['name'];
echo $data;

第四步:判断响应

请求发送到服务器之后,XMLHttpRequest 对象里的readyState 属性的改变的触发对象的onreadystatechange 事件

XMLHttpRequest 有三个重要属性readyState,status,onreadystatechange,

个人理解readyState是针对网页和服务端的连接,而进行的状态判断

status是针对服务端的判断,其中返回的数字是HTTP状态码,

当readyState改变就会触发onreadystatechange()事件

属性 描述
onreadystatechange 存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。
readyState

存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。

  • 0: 请求未初始化
  • 1: 服务器连接已建立
  • 2: 请求已接收
  • 3: 请求处理中
  • 4: 请求已完成,且响应已就绪
status

200: "OK"

404: 未找到页面

综上所述,如果onreadystatechange一触发,就会对两个状态码进行判断,如果符合,则表明响应就绪

HXR.onreadystatechange=function()
{
if (HXR.readyState==4 && HXR.status==200)
{
alert('响应就绪');
}
}

响应就绪后,就要获取数据

可以使用根据数据使用XMLHttpRequest 对象的 responseText 或 responseXML 属性

属性 描述
responseText 获得字符串形式的响应数据。
responseXML 获得 XML 形式的响应数据。
document.getElementById('sbb').innerHTML = HXR.responseText

本人写的实例:

var HXR;
if(window.XMLHttpRequest){
HXR = new XMLHttpRequest();//IE7或以上的主流浏览器
}
else{
HXR = new ActiveXObject("Microsoft.XMLHTTP");//IE5或6
}
HXR.open("GET","server.php?number="document.getElementById("search").value);
HXR.send();

HXR.onreadystatechange = function(){
if(HXR.status==200 && HXR.readyState===4){

    document.getElementById('sbb').value = HXR.responseText;
}
}

初步认识ajax(个人整理)的更多相关文章

  1. Ajax学习整理

    什么是ajax?W3School中给ajax的定义是: 1.AJAX = 异步 JavaScript 和 XML. 2.AJAX 是一种用于创建快速动态网页的技术. 3.通过在后台与服务器进行少量数据 ...

  2. ajax知识整理

    HTTP服务 1.服务器 服务器类型 服务类型:文件服务器.数据库服务器.邮件服务器.Web服务器等: 操作系统:Linux服务器.Windows服务器等: 应用软件:Apache服务器.Nginx ...

  3. 数据交互 ajax代码整理

    请求列表通用 /** **加载对应的试卷套题 ** */ function loadQuestions(){ var businessSubClass = { pageNo:pageNo, pageS ...

  4. ajax-jquery方法-初步入门01(整理)

    -----------------------------------2017.07.21写----------------------------------------- 相比较原生javascr ...

  5. ajax-javascript原生-初步入门01(整理)

    -----------------------------------2017.07.21写----------------------------------------- 1.ajax的原名: a ...

  6. AJAX笔记整理

    AJAX: Asynchronous JavaScript and XML,异步的Javascirpt和Xml. Asynchronous:异步 与之对应的是 synchronous:同步,我们要知道 ...

  7. ajax代码整理

    $.ajax({ type: "post", [以POST或GET的方式请求.默认GET.PUT和DELETE也可以用,有的浏览器不支持] url: url, [请求的目的地址,须 ...

  8. Ajax学习整理笔记

    AJAX技术的出现使得javascript技术大火.不懂AJAX的同学百度一下,了解AJAX能做什么就可以了. 代码: <!DOCTYPE html> <html> <h ...

  9. ajax技术整理总结(1)

    1.创建ajax对象 var xhr=new XMLHttpRequest(); 4.监听状态信息 xhr.onreadystatechange=function(){ //4接收完毕 ){ docu ...

随机推荐

  1. 广州APP开发外包公司哪家比较好?广州达到信息技术有限公司技术到底怎么样?

        广州APP开发公司哪家比较好,广州手机APP软件开发公司广州达到信息表示:用户的刚性需求是公司使用手机APP软件盈利的根本前提和基础,所以开发一款手机APP应用时必须从客户的角度来思考.因此公 ...

  2. shell tips

    1.shopt 命令可以设置shell的可选参数 shopt [-psu] [optname...] -s 开启某个选项 -u 关闭某个选项 -p 列出所有可设置的选项 其中开启extglob选项,s ...

  3. Putty文件夹蓝色太暗问题

    Putty文件夹蓝色太暗问题 用Putty通过ssh登陆Linux服务器时,有时候会发现系统默认的蓝色字体太暗,具体解决方法如下: (1)打开putty客户端,选择某登陆Session,然后load: ...

  4. POJ2955Brackets[区间DP]

    Brackets Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6585   Accepted: 3534 Descript ...

  5. NOIP2015pj求和

    题目描述 一条狭长的纸带被均匀划分出了n个格子,格子编号从1到n.每个格子上都染了一种颜色color_i用[1,m]当中的一个整数表示),并且写了一个数字number_i. 定义一种特殊的三元组:(x ...

  6. 已Access为支持,书写一个C#写入的记录的方案

      /// <summary> /// 读取Excel文档 /// </summary> /// <param name="Path">文件名称 ...

  7. Java daemon thread 守护线程

    守护线程与普通线程写法上基本么啥区别,在启动线程前, 调用线程对象的方法setDaemon(true),则可以将其设置为守护线程. 守护线程使用的情况较少,但并非无用,举例来说,JVM的垃圾回收.内存 ...

  8. 单机多实例Tomcat部署

    单机单用户基础上, 如何运行多个tomcat实例. 首先是tomcat的目录结构 bin    – 包含所有运行tomcat的二进制和脚本文件 lib     – 包含tomcat使用的所有共享库 c ...

  9. PAT 1014. 福尔摩斯的约会 (20)

    大侦探福尔摩斯接到一张奇怪的字条:"我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm".大侦 ...

  10. Delphi常用系统函数总结

    Delphi常用系统函数总结 字符串处理函数 Unit System 函数原型 function Concat(s1 [, s2,..., sn]: string): string; 说明 与 S : ...