Ajax异步加载的使用详解

这次给大家带来Ajax 异步加载的使用详解,使用Ajax 异步加载的注意事项有哪些,下面就是实战案例,一起来看一下。

AJAX (Asynchronous JavaScript and XML,异步的 JavaScript 和 XML)。它不是新的编程语言,而是一种使用现有标准的新方法,是在不重新加载整个页面的情况下与服务器交换数据并更新部分网页的艺术。
那么,让我们一起走进AJax的世界吧。

基础语法

学习Ajax之前,我们要明确自己的需求,那就是在不刷新页面的前提下实现异步的与服务器进行交互,更新页面信息。使用Ajax其实也是很简单的,我们只需要遵循一定的步骤即可。
 •创建Ajax对象(原生的需要判断当前浏览器的类型)
 •设置回调函数 (完成与服务器的交互之后所触发的函数)
 •打开请求,并发送。(根据请求方式的不同,代码书写稍有不同)
 •客户端获得反馈数据,更新页面 

获取Ajax对象

不同的浏览器对Ajax的支持是不一致的,所以我们要区别的对待。

Ajax异步加载的使用详解

设置回调函数

设置回调函数的目的就是在Ajax完成与服务器的交互之后,将获取到的数据信息,添加到页面上。

通常我们会指定onreadystatechange函数作为我们的回调处理函数。

相关于Ajax与服务器交互有如下状态信息供我们在编码的过程找中参考。

.readystate

关于加载状态有如下几个常用的数值:
 •0: 请求未初始化
 •1: 服务器连接已建立
 •2: 请求已接收
 •3: 请求处理中
 •4: 请求已完成,且响应已就绪 

.status

加载结果的状态信息有:
 •200: “OK”

 •404: “未找到此页面”

 开启交互

一谈起交互,映入脑海的就是双方。也就是我们的ajax客户端和服务器之间的交互。所以我们需要明确请求数据在服务器上的位置

open(method,url,async) 

url的使用会根据method的不同而不同,这一点我们务必要清楚。至于asynchronous这个参数,一般来说对于数据量很小的请求可以采用false,但是建议使用true来进行异步的加载,来避免服务器压力过大。

 •GET方式 

只是用这种方式很简单,指定url在服务器上的位置即可。这里红色部分的理解相当的重要。我们务必指定url为请求在服务器上的位置,一般采用绝对路径的方式。

// 对Servlet来说指定其注解上的位置即可xmlhttp.open("GET","/Test/servlet/AjaxServlet?userinput="+str.value,true);  xmlhttp.send();

登录后复制

 •POST方式 

使用POST方式的时候,我们需要额外的多一项处理。如下例:

xmlhttp.open("POST","ajax_test.asp",true);xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");// 在send方法中指定要传输的参数信息即可xmlhttp.send("fname=Bill&lname=Gates");

登录后复制

客户端更新页面

对于Ajax来说,顾名思义。是采用xml形式来传输数据的。但是目前而言,这不再是唯一的一种形式了。那么我们怎么将获取到的数据更新到网页上呢?有如下两种方式。
 •如果来自服务器的响应并非 XML,请使用 responseText 属性。
 document.getElementById(“myp”).innerHTML=xmlhttp.responseText;

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

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

登录后复制

实例体验

了解了这些基础语法之后,我们就可以在实际的开发中简单的应用了。为了更好的完成此次实验,我先做了一个简单的JavaWeb,来处理我们的Ajax请求。

使用Servlet方式

AjaxServlet.java

package one;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * Servlet implementation class AjaxServlet */@WebServlet("/AjaxServlet")public class AjaxServlet extends HttpServlet { private static final long serialVersionUID = 1L; /**  * @see HttpServlet#HttpServlet()  */ public AjaxServlet() {  super();  // TODO Auto-generated constructor stub } /**  * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse  *  response)  */ protected void doGet(HttpServletRequest request, HttpServletResponse response)   throws ServletException, IOException {  // TODO Auto-generated method stub  //response.getWriter().append("Served at: ").append(request.getContextPath());  String userinput = request.getParameter("userinput");  System.out.println("客户端连接!");  System.out.println("请求信息为:" + userinput);  PrintWriter out = response.getWriter();  if(userinput.equals("") || userinput.length()<6) {   response.setContentType("text/html;charset=UTF-8");   response.setCharacterEncoding("UTF-8");   response.setHeader("Content-Type", "text/html;charset=utf-8");   out.write("

the length of input string must be more than 6!

"); }else{ response.setContentType("text/html;charset=UTF-8"); response.setCharacterEncoding("UTF-8"); response.setHeader("Content-Type", "text/html;charset=utf-8"); out.println("

Correct!

"); } out.close(); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse * response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); }}

登录后复制

 web.xml

 Test  index.html index.htm index.jsp default.html default.htm default.jsp   AjaxServlet one.AjaxServlet   AjaxServlet /servlet/AjaxServlet 

登录后复制

ajax.html

Ajax测试

AJAX Test


getResult = function(str){ var httpxml; if(0 == str.value.length) { document.getElementById("ajax_result").innerHTML = "Nothing"; } if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); }else{ xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange = function(){ if(4 == xmlhttp.readyState && 200 == xmlhttp.status) { document.getElementById("ajax_result").innerHTML = xmlhttp.responseText; } } xmlhttp.open("GET","/Test/servlet/AjaxServlet?userinput="+str.value,true); xmlhttp.send(); }

登录后复制

实验结果
 •长度小于6时:

Ajax异步加载的使用详解

 •长度大于等于6:

Ajax异步加载的使用详解

使用JSP方式

receiveParams.jsp

 

登录后复制

ajax.html

Ajax测试

AJAX Test


getResult = function(str){ var httpxml; if(0 == str.value.length) { document.getElementById("ajax_result").innerHTML = "Nothing"; } if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); }else{ xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange = function(){ if(4 == xmlhttp.readyState && 200 == xmlhttp.status) { document.getElementById("ajax_result").innerHTML = xmlhttp.responseText; } } //xmlhttp.open("GET","/Test/servlet/AjaxServlet?userinput="+str.value,true); xmlhttp.open("GET","receiveParams.jsp?userinput="+str.value,true); xmlhttp.send(); }

登录后复制

效果一致。

JQuery 中的Ajax

前面介绍的是原生的Ajax实现方式,我们需要做的工作还是很多的,而JQuery帮助我们完成了平台无关性的工作,我们只需要专注于业务逻辑的开发即可。直接用jquery的.post或者.get或者.ajax方法,更方便更简单,js代码如下:
 •.POST方式

 $.post("./newProject",{newProjectName:project_name},   function(data,status){  //alert("data:" + data + "status:" + status);  if(status == "success"){   var nodes = data.getElementsByTagName("project");   //alert(nodes[0].getAttribute("name"));   for(var i = 0;i < nodes.length;i ++){    $("#project_items").append("" + nodes[i].getAttribute("name") + "");    }  } })

登录后复制

 •.ajax方式

 $(function(){  //按钮单击时执行  $("#testAjax").click(function(){    //Ajax调用处理   $.ajax({    type: "POST",    url: "test.php",    data: "name=garfield&age=18",    success: function(data){      $("#myp").html('

'+data+'

'); } }); }); });

登录后复制

 •.get方式

 $(document).ready(function(){ $("#bt").click(function(){ $.get("mytest/demo/antzone.txt",function(data,status){  alert("Data:"+data+"Status:"+status); }) })})

登录后复制

总结

今天的演示对于实际开发的过程中,服务器端的用户输入数据验证,或者即时更新页面而又减少网络流量是非常的有必要的。而且用处也很广泛,还能有效的提升用户体验。

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

Ajax+mysq实现省市区三级联动列表

Ajax传输Json和xml数据步奏详解(附代码)

以上就是Ajax异步加载的使用详解的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2775571.html

(0)
上一篇 2025年3月8日 14:29:51
下一篇 2025年3月8日 14:29:58

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 新手必看的Ajax技术组成与核心原理分析

    这次给大家带来新手必看的Ajax技术组成与核心原理分析,新手必看Ajax技术组成与核心原理分析的注意事项有哪些,下面就是实战案例,一起来看一下。 本文主要为大家分析了Ajax技术组成原理,供大家参考,具体内容如下 1、Ajax特点:局部刷新…

    编程技术 2025年3月8日
    200
  • Ajax技术的servlet输出怎么使用

    这次给大家带来Ajax技术的servlet输出怎么使用,使用Ajax技术servlet输出的注意事项有哪些,下面就是实战案例,一起来看一下。 Ajax的服务器端用PrintWriter out=resp.getWriter()来响应数据的时…

    编程技术 2025年3月8日
    200
  • 图文详解AJAX的底层原理介绍

    这次给大家带来图文详解AJAX的底层原理介绍,使用JAX底层原理的注意事项有哪些,下面就是实战案例,一起来看一下。 先上原理图:   背景:      1.传统的Web网站,提交表单,需要重新加载整个页面。      2.如果服务器长时间未…

    2025年3月8日 编程技术
    200
  • Ajax结合php怎么实现二级联动

    这次给大家带来Ajax结合php怎么实现二级联动,Ajax结合php实现二级联动的注意事项有哪些,下面就是实战案例,一起来看一下。 使用ajax,从php中获取数据 Ajax案例一 请选择 山东省 辽宁省 吉林省 请选择 // 1. 为元素…

    编程技术 2025年3月8日
    200
  • 怎么实现Ajax的三级联动商品分类

    这次给大家带来怎么实现Ajax的三级联动商品分类,实现Ajax的三级联动商品分类的注意事项有哪些,下面就是实战案例,一起来看一下。 思路分析: 效果:当页面加载时,利用ajax异步向后台请求数据,加载一级商品类别,当选择一级商品时加载二级商…

    2025年3月8日
    200
  • 使用FormData进行Ajax的上传文件

    这次给大家带来使用FormData进行Ajax的上传文件,使用FormData进行Ajax上传文件的注意事项有哪些,下面就是实战案例,一起来看一下。 通过传统的form表单提交的方式上传文件: Html代码  测试通过Rest接口上传文件 …

    编程技术 2025年3月8日
    200
  • Ajax请求响应中打开新窗口被拦截应该如何处理

    这次给大家带来Ajax请求响应中打开新窗口被拦截应该如何处理,处理Ajax请求响应中打开新窗口被拦截的注意事项有哪些,下面就是实战案例,一起来看一下。 一、问题描述 ajax 异步请求成功后需要新开窗口打开 url,使用的是 window.…

    编程技术 2025年3月8日
    200
  • 怎么设置Ajax请求成功即刻打开新窗口

    这次给大家带来怎么设置Ajax请求成功即刻打开新窗口,设置Ajax请求成功即刻打开新窗口的注意事项有哪些,下面就是实战案例,一起来看一下。 废话不多说,关键代码如下所示: jQuery.ajax({“type”:”post”,”url”:”…

    编程技术 2025年3月8日
    200
  • jQuery.ajaxWebService请求WebMethod处理Ajax

    这次给大家带来jQuery.ajaxWebService请求WebMethod处理Ajax,jQuery.ajaxWebService请求WebMethod处理Ajax的注意事项有哪些,下面就是实战案例,一起来看一下。 在WebForm下 …

    编程技术 2025年3月8日
    200
  • ajax实现txt文本在页面上弹出

    这次给大家带来ajax实现txt文本在页面上弹出,ajax实现txt文本在页面上弹出的注意事项有哪些,下面就是实战案例,一起来看一下。 使用ajax技术实现点击按钮,将TXT文本里的内容通过弹出框显示到页面上 /*事件会在页面加载完成后触发…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论