Ajax原理与应用案例快速入门教程

 更新时间:2019年07月02日 09:57:38   作者:webbc  
这篇文章主要介绍了Ajax原理与应用案例,结合实例形式分析了ajax原理、功能、创建及使用方法,需要的朋友可以参考下

本文实例讲述了Ajax原理与应用。分享给大家供大家参考,具体如下:

Ajax原理:页面不刷新的情况下,利用XMLHttpRequest对象发送HTTP请求,然后根据返回的内容进行相应的业务逻辑

使用Ajax的步骤:

(1)创建XMLHttpRequest对象
(2)发送http请求
(3)根据服务器返回的内容进行相应的操作

一步一步来说哈!

1、创建XMLHttpRequest对象

先看看w3c给出的信息

这里写图片描述

也就是说,如果要使用XMLHttpRequest对象还必须考虑浏览器的兼容型,因此可以封装一个方法来创建XMLHttpRequest对象。

//创建XMLHttpRequest对象
function createXhr(){
  var xhr = null;
  if(window.XMLHttpRequest){
    xhr = new XMLHttpRequest();//谷歌、火狐等浏览器
  }else if(window.ActiveXObject){
    xhr = new ActiveXObject("Microsoft.XMLHTTP");//ie低版本
  }
  return xhr;
}

2、发送Http请求

Http简述:

学过http请求的同学应该都知道,一个简单的请求应该包含这几部分内容,分别请求方法、主机、路径、协议版本等。

Telnet发送http请求截图:

这里写图片描述

Ajax中的Http请求:

在这里只用给出请求方法、路径。但是还有一个是请求方式,分为同步和异步,先不说同步和异步的差别,true表示异步,false表示同步。

xhr.open('GET','./05-ajax-vote.php',true);//确定请求的路径
xhr.send(null);//发送请求,携带数据为空

案例:

Ajax异步投票程序

文件结构图:

这里写图片描述

05-ajax-vote.html文件:

点击投票按钮,调用vote函数,然后穿件xhr对象,发送http请求,此处使用的是异步,并且实现了状态回调函数,然后在里面判断投票是否成功。

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <title>无刷新投票界面</title>
  <link rel="stylesheet" href="">
</head>
<script>
  //创建XMLHttpRequest对象
  function createXhr(){
    var xhr = null;
    if(window.XMLHttpRequest){
      xhr = new XMLHttpRequest();//谷歌、火狐等浏览器
    }else if(window.ActiveXObject){
      xhr = new ActiveXObject("Microsoft.XMLHTTP");//ie低版本
    }
    return xhr;
  }
  //ajax投票
  function vote(){
    //1、创建xhr对象
    var xhr = createXhr();
    //2、确定请求方法、路径、请求方式为异步
    xhr.open('GET','./05-ajax-vote.php',true);
    //3、发送请求
    xhr.send(null);
    //4、异步方式设置回调
    xhr.onreadystatechange = function(){
      //如果准备状态为4,表示执行结束
      if(this.readyState == 4){
        //根据服务端返回的标识来提示用户投票是否成功
        if(xhr.responseText == '1'){
          alert('投票成功');
        }else{
          alert('投票失败');
        }
      }
    }
  }
</script>
<body>
  <h1>无刷新投票界面</h1>
  <img src="./lin.jpg"/>
  <p>
    <a href="javascript:void(0);" rel="external nofollow" onclick="vote();">投票</a>
  </p>
</body>
</html>

05-ajax-vote.php文件:

以随机数的形式来模拟投票是否成功,如果成功则往05-ajax-vote-res.txt文件中增1,并返回表示1,失败则返回表示0。

<?php
/**
 * ajax投票程序
 * @author webbc
 */
if(rand(0,10) > 4){
  echo '0';//返回“投票失败”标识
}else{
  $number = file_get_contents('./05-ajax-vote-res.txt');
  $number++;
  file_put_contents('./05-ajax-vote-res.txt',$number);
  echo '1';//返回“投票成功”标识
}
?>

效果图:

这里写图片描述

同步和异步的区别:

同步:当xhr对象发送请求后,此时本页面脚本执行被中断,会等待该请求(05-ajax-vote.php)执行结束,才会回到断点继续执行发送请求后的操作。

异步:当xhr对象发送请求后,不需要等待发出的请求(05-ajax-vote.php)被执行结束,而是接着从发送请求的语句的后续继续执行

注意:如果采用异步方式请求某地址,如果要使用该地址返回的内容,则必须要设置状态回调函数,在回调函数中操作从服务器返回的内容,该回调函数会在该请求完成后被执行。

更多关于ajax相关内容感兴趣的读者可查看本站专题:《jquery中Ajax用法总结》、《JavaScript中ajax操作技巧总结》、《PHP+ajax技巧与应用小结》及《asp.net ajax技巧总结专题

希望本文所述对大家ajax程序设计有所帮助。

相关文章

  • PHP Ajax实现页面无刷新发表评论

    PHP Ajax实现页面无刷新发表评论

    PHP Ajax实现页面无刷新发表评论...
    2006-12-12
  • ajax动态为a标签href赋值不执行跳转的原因分析及解决

    ajax动态为a标签href赋值不执行跳转的原因分析及解决

    ajax 动态为a标签的href属性赋值,总是不执行跳转的原因想必大家有遇到过吧,下面与大家分享下具体的解决方法,希望对你有所帮助
    2013-06-06
  • ajax实现加载数据功能

    ajax实现加载数据功能

    这篇文章主要为大家详细介绍了ajax实现加载数据功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • 按钮的Ajax请求时一次点击两次提交的解决方法

    按钮的Ajax请求时一次点击两次提交的解决方法

    像ajax请求发生两次提交的原因是在执行完ajax请求后,并没有阻止submit的行为,下面小编给大家带来两种按钮的ajax请求时一次点击两次提交的解决方法,一起看看吧
    2016-09-09
  • 基于Ajax技术实现文件上传带进度条

    基于Ajax技术实现文件上传带进度条

    这篇文章主要介绍了基于Ajax技术实现文件上传带进度条的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • Ajax的jsonp方式跨域获取数据的简单实例

    Ajax的jsonp方式跨域获取数据的简单实例

    下面小编就为大家带来一篇Ajax的jsonp方式跨域获取数据的简单实例。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • ajax的定时调用每5秒调用一次

    ajax的定时调用每5秒调用一次

    这篇文章主要介绍了关于ajax的定时调用,本例为每5秒调用一次,大家可以根据自己的需求更改
    2014-05-05
  • 如何使用AJAX实现按需加载【推荐】

    如何使用AJAX实现按需加载【推荐】

    如何使用AJAX实现按需加载?下面小编就为大家带来一篇如何使用AJAX实现按需加载【推荐】。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • 图文解析AJAX的原理

    图文解析AJAX的原理

    Ajax的工作原理相当于在用户和服务器之间加了—个中间层(AJAX引擎),使用户操作与服务器响应异步化。网上关于介绍ajax的原理有很多,本文将通过图文的形式给大家更直接明了的介绍,有需要的可以参考学习。
    2016-08-08
  • ajax readyState的五种状态详解

    ajax readyState的五种状态详解

    0 - (未初始化)还没有调用send()方法 1 - (载入)已调用send()方法,正在发送请求 2 - (载入完成)send()方法执行完成,已经接收到全部响应内容 3 - (交互)正在解析响应内容 4 - (完成)响应内容解析完成,可以在客户端调用了
    2008-12-12

最新评论