微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Ajax基本使用

=======Ajax基本使用==========


#什么是Ajax,优点,什么时候用

全称:Asynchronous JavaScript and XML

异步的JavaScript和XML应用

Ajax请求,服务器返回的是纯数据,不是HTML页面

浏览器发请求1--->Tomcat服务器处理-->返回给浏览器

浏览器发请求2--->Tomcat服务器处理-->返回给浏览器

异步特点:请求2可以在请求1没处理返回情况下发出

优点:异步处理;

提升用户体验(在页面不刷新情况下,处理请求,改变页面部分显示)

提升请求的处理效率

选用标准:避免整个页面频繁刷新;实现局部处理刷新


#Ajax使用

XMLHttpRequest作用:发送请求,接收响应结果(内置在浏览器)

##XMLHttpRequest对象使用

-new XMLHttpRequest();//firefox,chrome

-new ActiveXObject("Microsoft.XMLHttp");//IE

-open(请求类型,url,同步异步);//创建请求

-send(post数据);//发送请求

-responseText;//获取服务器返回的内容

-responseXML;//获取服务器返回的XML内容

-readyState;//Ajax请求处理状态0-4

0:请求未初始化,1:请求未发送;2:请求发送完毕 3:请求正在处理;4:请求处理完毕

-onreadystatechange:事件

-status;//服务器响应HTTP CODE 200正确


#示例代码

demo1.html

<html>
  <head>
    <title>demo1.html</title>	
    <Meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <script type="text/javascript">
      //获取XMLHttpRequest对象
      function getXhr(){
        var xhr = null;
        if(window.XMLHttpRequest){
          xhr = new XMLHttpRequest();
        }else{
          xhr = new ActiveXObject("Microsoft.XMLHttp");
        }
        return xhr;
      }
      
      //发送请求
      function sendRequest1(){
        var xhr = getXhr();//获取XMLHttpRequest对象
        //alert(xhr);
        
        xhr.open("get","hello.do",true);//创建请求
        
        //注册回调函数
        xhr.onreadystatechange = function(){
          //解析结果,刷新页面处理
          //alert(xhr.readyState)
          if(xhr.readyState==4 && xhr.status==200){
            var msg = xhr.responseText;//获取返回的信息
            alert(msg);
          }
        }
        
        //参数对post有效,get写null
        xhr.send(null);//发送请求
      }
    </script>
    <script type="text/javascript">
      //失去焦点时,用户名检测 
      function sendRequest2(){
        //获取请求参数
        var name = document.getElementById("name").value;
        //alert(name);
        var s1 = document.getElementById("name_span");
        if(name==""){
          s1.innerHTML = "用户名为空";
          return ;
        }
        
        //发送ajax请求
        var xhr = getXhr();
        //alert(xhr);
        //var url = "check.do?name="+name;
        //xhr.open("get",true);
        xhr.open("post","check.do",true);
        //post请求时,须添加此消息头,否则参数为null
        xhr.setRequestHeader("content-type","application/x-www-form-urlencoded");
        
        xhr.send("name="+name+"&age=1");
        //友好提示
        s1.innerHTML = "正在检测...";
        
        xhr.onreadystatechange = function(){
          //alert(xhr.readyState);
          if(xhr.readyState==4&&xhr.status==200){
             var msg = xhr.responseText;
             s1.innerHTML = msg;
          }
        };
      }
    </script>
  </head>
  
  <body>
    <input type="button" id="btn1" value="发送ajax请求"
      onclick="sendRequest1();"/>
    <hr/>
    <input type="text" id="name" onblur="sendRequest2();"/>
    <span id="name_span"></span>
  </body>
</html>

HelloServlet.java

package com.ajax.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.servletexception;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet {

	@Override
	protected void service(HttpServletRequest req,HttpServletResponse res)
			throws servletexception,IOException {
		res.setContentType("text/html;charset=utf-8");
		PrintWriter pw = res.getWriter();
		System.out.println("哈喽 ajax");
		pw.print("哈喽 ajax");
		pw.close();
	}
	
}

CheckServlet.java

package com.ajax.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.servletexception;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CheckServlet extends HttpServlet{

	@Override
	protected void service(HttpServletRequest req,IOException {
		req.setCharacterEncoding("utf-8");
		res.setContentType("text/html;charset=utf-8");
		//接收请求参数
		String name = req.getParameter("name");
		//get解决乱码方法
		//name = new String(name.getBytes("iso8859-1"),"utf-8");
		System.out.println(name);
		String age = req.getParameter("age");
		System.out.println(age);
		
		try {
			Thread.sleep(3000);
		} catch (InterruptedException e) {
			e.printstacktrace();
		}
		
		//检查
		PrintWriter pw = res.getWriter();
		if("scott".equals(name)){
			//用户名被占用
			pw.print(name+":用户名被占用");
		}else{
			//用户名可用
			pw.print(name+":用户名可用");
		}
		pw.close();
	}
	
}

原文地址:https://www.jb51.cc/ajax/162389.html

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

相关推荐