AJAX - 基本知识

Ajax=异步的JavaScript和XML

     通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

一、AJAX
- 创建 XMLHttpRequest 对象


1.什么是XMLHttpRequest对象


     所有现代浏览器(IE7、Chrome、Firefox、Safari、Opera)均支持XMLHttpRequest对象,XMLHttpRequest对象用来在后台与服务器交换数据,实现页面局部刷新。


2.如何创建XMLHttpRequest对象


     一般浏览器都支持XMLHttpRequest对象,但部分IE浏览器支持的是ActiveXObject。


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");
       }


3.XMLHttpRequest对象如何与服务器交换数据


3.1 向服务器发送请求


     我们使用XMLHttpRequest的Open和Send方法:

xmlhttp.open("GET","text.txt",true);
xmlhttp.send();
方法 描述
open(method,url,async)
规定请求的类型、URL 以及是否异步处理请求。

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

  • string:仅用于 POST 请求


3.1.1 使用GET请求

 

     一个简单的GET请求:

xmlhttp.open("GET","demo_get.asp",true);
xmlhttp.send();

     为了避免每次获得的是缓存中的内容,为了避免,可以在url中加一个唯一的时间ID:

xmlhttp.open("GET","demo_get.asp?t="+Math.random(),true);
xmlhttp.send();

     通过GET向服务器发送数据Demo:

xmlhttp.open("GET","demo_get.asp?name=heaven&age=26",true);
xmlhttp.send();


3.1.3 使用POST请求:


     一个简单的POST请求:

xmlhttp.open("POST","demo_get.asp",true);
xmlhttp.send();

     如果像html表单那样POST数据,在setRequestHeader来添加HTTP头,使用send方法中规定要发送的数据:

xmlhttp.open("POST","ajax_test.asp",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("fname=Bill&lname=Gates");

     向请求添加 HTTP 头:setRequestHeader(header,value)     
          header: 规定头的名称
          value: 规定头的值

3.1.3关于异步True或False:


     对于web开发来说,发送异步请求是一个巨大的进步,因为很多在服务器执行的任务都相当费时,在Ajax出现前,这可能会引起应用程序挂起或停止。

     通过Ajax,JavaScript无需等待服务器响应,而是:

          1.在等待服务器响应期间执行其它脚本

          2.当响应就绪后对响应进行处理

当Async=True时,应设置onreadystatechange事件中处于就绪状态时的执行函数:

xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","test1.txt",true);
xmlhttp.send();

当Async=False时,处于同步状态,此时JavaScript会等到服务器就绪时才执行,无需写onreadystatechange监控函数:

xmlhttp.open("GET","test1.txt",false);
xmlhttp.send();
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;


3.2 服务器的响应

     

如果要获得来自服务器的响应,使用XMLHttpRequest中的responseText或responseXML。

responseText 获得字符串形式的响应数据。
responseXML 获得 XML 形式的响应数据。

3.2.1 使用responseText

     responseText 属性返回字符串形式的响应,因此您可以这样使用:

document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

3.2.2 使用responseXML

     如果来自服务器的响应是 XML,而且需要作为 XML 对象进行解析,请使用 responseXML 属性:

 请求 books.xml 文件,并解析响应:

xmlDoc=xmlhttp.responseXML;
txt="";
x=xmlDoc.getElementsByTagName("ARTIST");
for (i=0;i<x.length;i++)
  {
  txt=txt + x[i].childNodes[0].nodeValue + "<br />";
  }
document.getElementById("myDiv").innerHTML=txt;

3.3 Ajax 的 onreadystatechange事件

     当请求发送到服务器的整个过程中,我们需要执行一些基于响应的任务,即每当readyState改变时都会触发onreadystatechange事件,readyState属性存有XMLHttpRequest的状态信息。

下面是XMLHttpRequest对象的三个重要属性:

属性 描述
onreadystatechange 存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。
readyState
存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。

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

404: 未找到页面

当readyState=4且status=200时,表示响应已就绪:

xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }

3.4 使用callback回调函数

     callback函数是一种以参数的形式传递给另一个函数的函数,我们在处理Ajax任务时,一般都会写一个处理Ajax请求的标准函数,这个标准函数包括请求的url和发生onreadystatechange时间所执行的任务:

     

< html>

     < head>

     < script type ="text/javascript" >

          var xmlhttp;

          function loadXMLDoc(url,cfunc) {

               if (window.XMLHttpRequest) { 

                    // code for IE7+, Firefox, Chrome, Opera, Safari

                 xmlhttp= new XMLHttpRequest();

              } else { 

                    // code for IE6, IE5

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

              }

               xmlhttp.onreadystatechange=cfunc;

               xmlhttp.open( "GET",url, true );

               xmlhttp.send();

          }

          function myFunction(){

               loadXMLDoc( "/ajax/test1.txt", function (){

                 if (xmlhttp.readyState==4
&& xmlhttp.status==200){

                   document.getElementById( "myDiv" ).innerHTML=xmlhttp.responseText;

                }

              });

          }

     </ script>

     </ head>

< body>

  < div id= "myDiv" >

             < h2> Let
AJAX change this text </h2 >

  </ div>

  < button type ="button" onclick= "myFunction()"> 通过
AJAX 改变内容 </ button>

     </ body>

</ html>

时间: 2024-09-09 22:49:21

AJAX - 基本知识的相关文章

HTTP报文及ajax基础知识

HTTP报文 客户端传递给服务器的内容 和 服务器传递给客户端的内容 都属于HTTP报文 起始行:请求起始行  响应起始行 首部:请求首部 响应首部 通用首部(请求和响应都有的) 自定义首部 主体:请求主体  响应主体 客户端传递给服务器端数据: 请求URL后面问号传参的方式传递给服务器  /getList?name=zhangsan&age=7 设置请求的首部(设置请求头信息) 设置请求主体,把传递给服务器的内容放在请求主体中传递给服务器 服务器端传递给客户端数据: 设置响应头信息 设置响应主

[ajax基础知识]js事件触发大全

js|事件触发|ajax onactivate                        当对象设置为活动元素时触发. onbeforeactivate                  对象要被设置为当前元素前立即触发. onbeforecut                       当选中区从文档中删除之前在源对象触发. onbeforedeactivate                在 activeElement 从当前对象变为父文档其它对象之前立即触发. onbeforeed

Ajax技术:构建动态的Java应用程序

ajax|程序|动态 [导读]在本文中,作者Philip McCarthy介绍了通过后台通道的方法来创建动态Web应用的经验. Ajax(Asynchronous JavaScript and XML)是一个结合了Java技术.XML.以及JavaScript的编程技术,可以让你构建基于Java技术的Web应用,并打破了使用页面重载的惯例. Ajax,异步JavaScript与XML,是使用客户端脚本与Web服务器交换数据的Web应用开发方法.这样,Web页面不用打断交互流程进行重新加裁,就可以

Ajax铺设了更好的开发Web应用道路(图)

ajax|web 页面重载提出了一个在Web应用开发中最大的可用性障碍,对于Java开发来说也是一个重大的挑战.在本文中,作者Philip McCarthy介绍了通过后台通道的方法来创建动态Web应用的经验. Ajax(Asynchronous JavaScript and XML)是一个结合了Java技术.XML.以及JavaScript的编程技术,可以让你构建基于Java技术的Web应用,并打破了使用页面重载的惯例. Ajax,异步JavaScript与XML,是使用客户端脚本与Web服务器

Ajax铺设了更好的开发Web应用的道路

ajax|web 页面重载提出了一个在Web应用开发中最大的可用性障碍,对于Java开发来说也是一个重大的挑战.在本系列中,作者Philip McCarthy介绍了通过后台通道的方法来创建动态Web应用的经验. Ajax(Asynchronous JavaScript and XML)是一个结合了Java技术.XML.以及JavaScript的编程技术,可以让你构建基于Java技术的Web应用,并打破了使用页面重载的惯例. Ajax,异步JavaScript与XML,是使用客户端脚本与Web服务

PHP+jQuery+Ajax+Mysql实现发表心情功能

  我们在浏览网站文章或帖子后,需要表达自己浏览后的心情感受,在很多网站都提供了给用户发表心情的功能,通过这个功能可以直观统计分析文章或帖子的浏览者的心情感受数据.在本文中,您将了解到,如何实现通过点击心情图标,即刻发表自己的心情. 下载 http://bbs.php100.com/read-htm-tid-391083-ds-1.html  本文通过实例讲解使用PHP+jQuery+Ajax+Mysql相结合,实现了用户发表心情的功能,操作简单,实用性强,是一篇将WEB知识进行综合应用的文章,

用Microsoft ASP.NET AJAX技术构建交互式的用户界面—part1

导言 在过去的几年时间里,web开发员开始使用JavaScript来向web服务器执行异步回传,也就是仅仅发送和接收必要的数据.这些技术通常统称为AJAX.如果设计 合理的话,具有AJAX功能的web应用程序,其用户界面的高度交互性完全可以与桌面应用程序相媲美. 由于AJAX包含了网络体系(networking stack)里不同层面的很多 技术,在不使用AJAX framework的情况下执行AJAX很困难也很容易出错.还好,微软为ASP.NET开发者推出了免费的AJAX framework:

jQuery ajax:Baidu ajax

你没有看错标题,本文的确是在讲Baidu ajax,不过是很久很久以前的版本了. 由于jQuery ajax 模块有800+行,而核心函数jQuery.ajax就有380+行,直接分析这段代码很容易被代码逻辑弄晕. 所以 我们先分析一段简单的ajax代码,来自早期的百度七巧板项目. 通过这个来先复习一遍ajax的知识. baidu.ajax.request分离版 /** * 发送一个ajax请求 * @author: allstar, erik, berg * @name ajax.reques

Smarty结合Ajax实现无刷新留言本实例_php实例

看了标题你也许要说,留言本,很基本的东东啊!谁不会啊,还要用Smarty,这不找累吗?别急,我要表达的是一种编程的思想和结构,而不是证明我做的东西多有意义,通过它相信对初学者学习Smarty和ajax有些启发.原本用ajax做的,可惜始终调试不成功,只好用手写JS来弄了,不过不要紧,还是有一定价值的.站点结构大家下了源代码自己看,代码不长,应该不会看烦^_^,听我慢慢道来.     现在都PHP5了OO(面向对象)很流行了都,这里也不错过,首先来看下我们用OO来实现数据库操作和连接:[php]<