非常简单的Ajax请求实例附源码

 更新时间:2015年11月03日 14:17:40   投稿:lijiao  
这篇文章为大家推荐了一个非常简单的Ajax请求实例,可以在不重载页面的情况与 Web 服务器交换数据,感兴趣的小伙伴们可以参考一下

Ajax不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的Web应用程序的技术。通过Ajax,您可以使用 JavaScript的XMLHttpRequest对象来直接与服务器进行通信。您可以在不重载页面的情况与 Web 服务器交换数据。在本文的例子中,我们将演示当用户向一个标准的HTML表单中输入数据时网页如何与web服务器进行通信。

<!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=utf-8" />
 <title>简单的Ajax请求</title>
 <script type="text/javascript">
  var xmlHttp;
  // 创建XMLHttpRequest对象
  function createXMLHttpRequest() {
   if (window.ActiveXObject) {
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
   }
   else if (window.XMLHttpRequest) {
    xmlHttp = new XMLHttpRequest();
   }
  }
  // 整合url参数
  function createQueryString() {
   var name = document.getElementById("txtName").value;
   var sex = document.getElementById("txtSex").value;
   var birthday = document.getElementById("txtBirthday").value;
   var queryString = "Name=" + encodeURIComponent(name) + "&Sex=" + encodeURIComponent(sex) + "&Birthday=" + encodeURIComponent(birthday);
   return queryString;
  }
  // 按照Get方式传递参数
  function doRequestUsingGET() {
   createXMLHttpRequest();
   var queryString = "AjaxServer.ashx?";
   queryString = queryString + createQueryString() + "&timeStamp=" + new Date().getTime();
   xmlHttp.onreadystatechange = handleStateChange;
   xmlHttp.open("GET", queryString, true);
   xmlHttp.send(null);
  }
  // 按POST方式传递参数
  function doRequestUsingPOST() {
   createXMLHttpRequest();
   var url = "AjaxServer.ashx?timeStamp=" + new Date().getTime();
   var queryString = createQueryString();
   xmlHttp.open("POST", url, true);
   xmlHttp.onreadystatechange = handleStateChange;
   xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
   xmlHttp.send(queryString);
  }
  // 回调函数
  function handleStateChange() {
   if (xmlHttp.readyState == 4) {
    if (xmlHttp.status == 200) {
     parseResults();
    }
   }
  }
  // 处理服务器响应内容
  function parseResults() {
   var responseDiv = document.getElementById("serverResponse");
   if (responseDiv.hasChildNodes()) {
    responseDiv.removeChild(responseDiv.childNodes[0]);
   }
   var responseText = document.createTextNode(xmlHttp.responseText);
   responseDiv.appendChild(responseText);
  }
 </script>
</head>
<body>
 <form action="#">
 <h2>输入你的名字,性别,生日:</h2>
 <table>
  <tr><td>名字:</td><td><input type="text" id="txtName" /></td></tr>
  <tr><td>性别:</td><td><input type="text" id="txtSex" /></td></tr>
  <tr><td>生日:</td><td><input type="text" id="txtBirthday" /></td>
  </tr>
 </table>
 <input type="button" value="用Get方式传参数" onclick="doRequestUsingGET();"/>
 <br /><br />
 <input type="button" value="用POST方式传参数" onclick="doRequestUsingPOST();"/>
 </form>
 <br />
 <h3>服务器响应内容:</h3>
 <div id="serverResponse"></div>
</body>
</html>

下面来详细说明每个JS函数的功能。
createXMLHttpRequest() 用来创建XMLHttpRequest对象。
因为IE把XMLHttpRequest实现为一个ActiveX对象,其他浏览器(FF/Safari/Opera)把它实现为一个本地JavaScript对象。由于存在这些差别,JavaScript代码中必须包含有关的逻辑。
createQueryString() 用来整理参数,将Ajax请求要传递的参数整理成一定的格式。
如果传递中文或非ASCII字符必须进行URL编码,本例使用JS的encodeURIComponent()函数进行参数URL编码。
doRequestUsingGET() 以HTTP GET方式向服务器发送请求,并且传递参数。
XMLHttpRequest对象的open()方法会指定将发出的请求。open()方法取3个参数:一个是指示所使用的方法(通常是GET或POST)的串;一个是表示目标资源URL的串;一个是Boolean值,只是请求是否是异步的。
GET请求时,将传递的参数写到open方法的url参数中,此时send方法的参数为null。
在某些情况下,有些浏览器会把多个XMLHttpRequest请求的结果缓存在同一个URL。如果对每个请求的响应不同,这就会带来不好的结果,把当前时间戳追加到URL的最后,就能确保URL的惟一性,从而避免浏览器缓存结果。
本例服务器端代码使用的是asp.net(c#)。
doRequestUsingPOST() 以HTTP POST方式向服务器发送请求,并且传递参数。
确保open()中指定的方法是POST,需要设定Content-Type头信息,模拟HTTP POST方法发送一个表单,这样服务器才会知道如何处理上传的内容。设置头信息前必须先调用open方法。
必须使用send方法传递参数。参数的提交格式和GET方法中url的写法一样。
handleStateChange()  Ajax回调函数。
对于XMLHttpRequest对象,onreadystatechange属性存储了回调函数的指针。当XMLHttpRequest对象内部状态发生变化时,就会调用这个回调函数。
parseResults() 处理响应结果。

以上就是一个很简单的Ajax请求实例,欢迎大家学习,下载Ajax请求实例

相关文章

  • ajax获取数据中文乱码问题最简单的完美解决方案

    ajax获取数据中文乱码问题最简单的完美解决方案

    这篇文章主要介绍了ajax获取数据中文乱码问题最简单的完美解决方案,需要的朋友可以参考下
    2014-11-11
  • 使用AJAX返回WebService里的集合具体实现

    使用AJAX返回WebService里的集合具体实现

    如何使用AJAX返回WebService里的集合,在本文将有一个完美的实现,感兴趣的朋友可以参考下哈,希望可以帮助到你
    2013-05-05
  • ajax实现输入提示效果

    ajax实现输入提示效果

    这篇文章主要为大家详细介绍了ajax实现输入提示效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • Ajax校验用户名是否存在的方法

    Ajax校验用户名是否存在的方法

    这篇文章主要为大家详细介绍了Ajax校验用户名是否存在的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • JavaScript实现Ajax总结

    JavaScript实现Ajax总结

    ajax应用非常普及,ajax的优点大家都知道,具体就不多说了,其缺点还真不少,比如破坏浏览器的back功能,同一个url打开的界面并不是完全相同,还有安全性能等方面,至于有这么多的缺点,也阻止不了大家使用ajax的步伐,下文给大家分享javascript实现ajax小结吧
    2015-10-10
  • AJAX对服务器返回XML的处理方法

    AJAX对服务器返回XML的处理方法

    这篇文章主要介绍了AJAX对服务器返回XML的处理方法,实例分析了Ajax的实现技巧及针对XML返回数据的处理方法,需要的朋友可以参考下
    2015-03-03
  • Ajax实现城市二级联动(一)

    Ajax实现城市二级联动(一)

    这篇文章主要为大家详细介绍了Ajax实现城市二级联动的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • js与jQuery实现的兼容多浏览器Ajax请求实例

    js与jQuery实现的兼容多浏览器Ajax请求实例

    这篇文章主要介绍了js与jQuery实现的兼容多浏览器Ajax请求,以实例形式分别讲述了采用纯js与jQuery实现的兼容多浏览器Ajax请求的方法,并对Ajax中出现的乱码问题进行了一定的分析,需要的朋友可以参考下
    2014-11-11
  • 如何实现ajax延时发送在空闲之后去发送ajax请求

    如何实现ajax延时发送在空闲之后去发送ajax请求

    关键字搜索的功能,还是比较实用的,在实现过程中就需用到ajax延时发送,下面有个不错的示例,有需要的朋友可以参考下
    2013-12-12
  • ajax中的async属性值之同步和异步及同步和异步区别

    ajax中的async属性值之同步和异步及同步和异步区别

    在Jquery中ajax方法中async用于控制同步和异步,当async值为true时是异步请求,当async值为fase时是同步请求。ajax中async这个属性,用于控制请求数据的方式,默认是true,即默认以异步的方式请求数据。
    2015-10-10

最新评论