Ajax的学习与使用

  要想应用Ajax,首先必须搞清楚Ajax的执行原理:一个Ajax交互从一个称为XMLHttpRequest的JavaScript对象开始。如同名字所暗示的,它允许一个客户端脚本来执行HTTP请求,并且将会解析一个XML格式的服务器响应。Ajax处理过程中的第一步是创建一个XMLHttpRequest实例。使用HTTP方法(GET或POST)来处理请求,并将目标URL设置到XMLHttpRequest对象上。
  当你发送HTTP请求,你不希望浏览器挂起并等待服务器的响应,取而代之的是,你希望通过页面继续响应用户的界面交互,并在服务器响应真正到达后处理它们。要完成它,你可以向XMLHttpRequest注册一个回调函数,并异步地派发XMLHttpRequest请求。控制权马上就被返回到浏览器,当服务器响应到达时,回调函数将会被调用。

  看这些你可能看不懂,太抽象了!下面我给个Ajax的实际例子:
1. 初始化Ajax
  Ajax实际上就是调用了XMLHttpRequest对象,那么首先我们的就必须调用这个对象,我们构建一个初始化Ajax的函数:

 function InitAjax()
  {
 var ajax=false;
 try
 {
  ajax = new ActiveXObject("Msxml2.XMLHTTP");
 }
 catch (e)
 {
    try
  {
     ajax = new ActiveXObject("Microsoft.XMLHTTP");
  }
  catch (E)
  {
      ajax = false;
    }
      }
 if (!ajax && typeof XMLHttpRequest!='undefined')
 {
    ajax = new XMLHttpRequest();
  }
  return ajax;
  }
我们在执行任何Ajax操作之前,都必须先调用InitAjax()函数来实例化一个Ajax对象。这个函数可以作为一个通用函数来用,当然这个函数也有其他的写法,此处写的比较简单,因为大多数浏览器都支持Ajax。

2. 使用Get方式
  现在我们第一步来执行一个Get请求,加入我们需要获取 /show.php?id=1的数据,那么我们应该怎么做呢?
  假设有一个链接:<a href="/show.php?id=1">新闻1</a>,我点该链接的时候,不想任何刷新就能够看到链接的内容,那么我们该怎么做呢?
   
    //将链接改为:
    <a href="#" onClick="getNews(1)">新闻1</a>
   //并且设置一个接收新闻的层,并且设置为不显示:
   <div id="show_news"></div>
   同时构造相应的JavaScript函数:
   function getNews(newsID)
  {
  //如果没有把参数newsID传进来
  if (typeof(newsID) == 'undefined')
  {
   return false;
  }
  //需要进行Ajax的URL地址
  var url = "/show.php?id="+ newsID;
    //获取新闻显示层的位置
  var show = document.getElementById("show_news");
  //实例化Ajax对象
  var ajax = InitAjax();
  //使用Get方式进行请求
  ajax.open("GET", url, true);
  //获取执行状态
  ajax.onreadystatechange = function() {
  //如果执行是状态正常,那么就把返回的内容赋值给上面指定的层
  if (ajax.readyState == 4 && ajax.status == 200)
   {
    show.innerHTML = ajax.responseText;
  }
  }
  //发送空
  ajax.send(null);
 }
当用户点击“新闻1”这个链接的时候,在下面对应的层将显示获取的内容,而且页面没有任何刷新。当然,上面省略了show.php这个文件,我们只是假设show.php文件存在,并且能够正常工作的从数据库中把id为1的新闻提取出来。这种方式适应于页面中任何元素,包括表单等等,其实在应用中,对表单的操作是比较多的,针对表单,更多使用的是POST方式。


下面是我做的一个简单的例子:
1、test.php文件代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>ajax测试页</title>
<style type="text/css">
<!--
body {
 margin-left: 10%;
 margin-right: 10%;
}
#Layer1 {
 position:absolute;
 width:256px;
 height:326px;
 z-index:1;
 left: 380px;
 top: 16px;
}
-->
</style>
<script type="text/javascript">
function InitAjax()
{
 var ajax=false;
 try
 {
  ajax = new ActiveXObject("Msxml2.XMLHTTP");
 }
 catch (e)
 {
   try
  {
    ajax = new ActiveXObject("Microsoft.XMLHTTP");
  }
  catch (E)
  {
     ajax = false;
   }
  }
 if (!ajax && typeof XMLHttpRequest!='undefined')
 {
   ajax = new XMLHttpRequest();
  }
  return ajax;
}
function getimages(id)
{
  var url = "images.php?picture="+id;
 var show = document.getElementById("Layer1");
  var ajax = InitAjax();
 ajax.open("GET", url, true);
   ajax.onreadystatechange = function()
 {
   if (ajax.readyState == 4 && ajax.status == 200)
  {
     show.innerHTML = ajax.responseText;
   }
  }
  ajax.send(null);
}
</script>
</head>

<body>
<table width="226" height="433" border="1" align="left" cellpadding="3" rules="none" frame="rhs">
  <tr>
    <th height="69" scope="col" align="right"><input type="button" name="" value="图片一" οnclick="getimages(1)"></th>
  </tr>
  <tr>
    <th height="69" scope="col" align="right"><input type="button" name="" value="图片二" οnclick="getimages(2)"></th>
  </tr>
  <tr>
    <th height="69" scope="col" align="right"><input type="button" name="" value="图片三" οnclick="getimages(3)"></th>
  </tr>
  <tr>
  <th height="214" scope="col"></th>
  </tr>
</table>
<div id="Layer1"></div>
</body>
</html>

 

2、images.php文件代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>图片</title>
</head>

<body>
<?php
$id=$_GET["picture"];
if($id==1)
{
 printf("<img src='images/1.jpg' width='320' height='440' />");
}
if($id==2)
{
 printf("<img src='images/2.jpg' width='320' height='440' />");
}
if($id==3)
{
 printf("<img src='images/3.jpg' width='320' height='440' />");
}
?>
</body>
</html>

只要在images文件夹下有这三个图片就可以了!

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值