美文网首页
7 jquery中ajax

7 jquery中ajax

作者: 流光已至 | 来源:发表于2018-08-05 21:14 被阅读0次
 // 标准ajax
      $.ajax({
        
         type:'POST',    //type:请求方式get或者是post
         url:'/jquery_demo1/demoServlet', //url:请求地址
         async:false,       // 同步的ajax
         data:{name:'aa'},    //data:发送的数据
         dataType:'text' ,    //dataType:返回的数据类型,有json,text,xml,html
         success:function(responseText){  //success:回调的数据方法
             
            alert(responseText) ;
         },
      
         error:function(){
             alert('发生错误');             //error:发生错误时
         }  
          
      });

ajax.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"   pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="../js/jquery-1.8.3.js"></script>
<title>Insert title here</title>
<script type="text/javascript">
function ajaxInvoke(){

    /* var uname = $("#username").val();

        var opt = {
            type :'post',//请求方式 有单引号
            url : '${path}/login', //请求的地址
            data : {
                username : uname
            },
            dataType : 'text',//返回值类型,一般有两种 json和text   

            success : function(responseText) { //ajax调用成功后的回调方法
                // alert(responseText);
               // var jsonObj= window.eval("("+responseText+")"); 使用json库
                var jsonObj=$.parseJSON(responseText);
                alert(jsonObj.id+" "+jsonObj.name+" "+jsonObj.age);
            },
            error : function() {    //调用失败进入方法
                alert("系统错误");    //如果404或者后台报异常(throw new RuntimeException())就会进入
            } 

        };
        $.ajax(opt); */
        
    //dataType为json类型   
    var uname = $("#username").val();

    var opt = {
        type :'post',//请求方式 有单引号
        url : '${pageContext.request.contextPath }/login', //请求的地址
        data : {
            username : uname
        },
        dataType : 'json',//返回值类型,一般有两种 json和text   

        success : function(responseJSON) {
            
            alert(responseJSON.id+" "+responseJSON.name+" "+responseJSON.age);
            //如果dataType是Json那么要求后台一定要返回JSONObj或者JSONArray对象
            //这个后台的JSON对象会直接转换成js中的json;
            
        }, 
        error : function() {    //调用失败进入方法
            alert("系统错误");    //如果404或者后台报异常(throw new RuntimeException())就会进入
        } 

    };
    $.ajax(opt);
    }
</script>
<style type="text/css">



</style>
</head>
<body>
<input id="username" name="username" type="text">
<input type="button" value="点击" onclick="ajaxInvoke()">
</body>
</html>

MyServlet.java

public class MyServlet extends HttpServlet {
       @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
           //获得ajax发送的数据
        String name= req.getParameter("username");
        Person p = new Person();
        p.setId(1);
        p.setAge(20);
        p.setName("张三");
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        //String result="{\"id\":"+p.getId()+",\"name\":\""+p.getName()+"\",\"age\":"+p.getAge()+"}"; //太麻烦  拼json串
         //直接使用json库
         JSONObject obj = JSONObject.fromObject(p);
         resp.getWriter().print(obj);
           
    }
    
       
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        this.doGet(req, resp);
    }
}

web.xml配置

ajax1.jsp

<script type="text/javascript">
function ajaxInvoke(){

    //ajax是异步的  可以用/async:false/变成同步
    //程序不会等着回调函数执行完毕才去执行;
    var uname = $("#username").val();

    var opt = {
        type :'post',//请求方式 有单引号
        url : '${path}/login', //请求的地址
        
        data : {
            username : uname
        },
        dataType : 'json',//返回值类型,一般有两种 json和text   

        success : function(responseJSON) {
            
            alert(responseJSON.id+" "+responseJSON.name+" "+responseJSON.age);
            //如果dataType是Json那么要求后台一定要返回JSONObj或者JSONArray对象
            //这个后台的JSON对象会直接转换成js中的json;
            
        }, 
        error : function() {    //调用失败进入方法
            alert("系统错误");    //如果404或者后台报异常(throw new RuntimeException())就会进入
        } 

    };
    $.ajax(opt);
    }
</script>
<style type="text/css">



</style>
</head>
<body>
<input id="username" name="username" type="text">
<input type="button" value="点击" onclick="ajaxInvoke()">
</body>
</html>

ValidServlet

public class ValidServlet extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
             //获得ajax3发送的数据
            String name=req.getParameter("uname");
            if("12345".equals(name)){
                resp.getWriter().print("yes");
            }else{
                resp.getWriter().print("no");

            }
        }
        
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
             this.doPost(req, resp);
        }

}

ajaxvalid.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="../js/jquery-1.8.3.js"></script>
<title>Insert title here</title>
<script type="text/javascript">
    //添加用户名已存在 使用ajax去后台
 
  
    $(function(){
        
        //ajax重复性校验 no不重复 yes重复
        function validSame(val){
            var isSame="no";
            $.ajax({
                
                type :'post',
                url : '${pageContext.request.contextPath }/valid', 
                async:false,
                data : {
                    uname : val
                },
                dataType : 'text',  

                success : function(result) {
                    
                    isSame=result;
                }, 
                error : function() {   
                    alert("系统错误");    
                } 
             
                
            })
             return isSame; 
            
        }
        
        //离开焦点时进行正则和重复性校验
        $("form input").keyup(function(event){
        //$("form input").blur(function(){
            var obj=$(this);
            var val =obj.val();
            var reg1=obj.attr("reg");
            var tip1=obj.attr("tip");
            var name=obj.attr("name");
            var regObj= new RegExp(reg1);
            
            if(!regObj.test(val)){
                var spanObj=obj.next();
                spanObj.html("<font color='red'>"+tip1+"</font>");
            }else{
                var spanObj=obj.next();
                if(name=="username"){
                    //ajax重复性校验
                    var result=validSame(val);
                    if(result=="yes"){
                        spanObj.html("<font color='red'>username is existed</font>");
                    }else{
                        spanObj.html(" ");
                    }
                }else{
                    spanObj.html(" ");
                }
                
            }
        });
        
        $("form input").focus(function(){
            $(this).css("background","yellow");
            
        })
        
        
 
       
    
    //提交表单时也应做相应处理
    $("#myform").submit(function(){
        var isSubmit=true;
        $("form input").each(function(){
            var obj=$(this);
            var val =obj.val();
            var reg1=obj.attr("reg");
            var tip1=obj.attr("tip");
            var name=obj.attr("name");
            var regObj= new RegExp(reg1);
            
            if(!regObj.test(val)){
                var spanObj=obj.next();
                spanObj.html("<font color='red'>"+tip1+"</font>");
                isSubmit=false;
            }else{
                var spanObj=obj.next();
                if(name=="username"){
                    //ajax重复性校验
                    var result=validSame(val);
                    if(result=="yes"){
                        spanObj.html("<font color='red'>username is existed</font>");
                        isSubmit=false;
                    }else{
                        spanObj.html(" ");
                    }
                }else{
                    spanObj.html(" ");
                }
                
            }
           
         })
         return isSubmit;
    });  
    
    //回车时也应做相应处理
    $("body").keydown(function(event){
        var num = window.event?event.keyCode:event.which;
        if(num==13){
            var isSubmit = true;
            $("form input").each(function(){
                var obj=$(this);
                var val =obj.val();
                var reg1=obj.attr("reg");
                var tip1=obj.attr("tip");
                var name=obj.attr("name");
                var regObj= new RegExp(reg1);
                
                if(!regObj.test(val)){
                    var spanObj=obj.next();
                    spanObj.html("<font color='red'>"+tip1+"</font>");
                    isSubmit=false;
                }else{
                    var spanObj=obj.next();
                    if(name=="username"){
                        //ajax重复性校验
                        var result=validSame(val);
                        if(result=="yes"){
                            spanObj.html("<font color='red'>username is existed</font>");
                            isSubmit=false;
                        }else{
                            spanObj.html(" ");
                        }
                    }else{
                        spanObj.html(" ");
                    }
                    
                }
               
             })
             return isSubmit;    
            
            
            
        }
    })
    
    
    
    
    
    
    
    
  });
</script>
<style type="text/css">



</style>
</head>
<body>
<form action="${path }/jsp1/table.jsp" id="myform">
     
        <p>用户名:<input name="username"     type="text" reg="^\d{3,8}$" tip="请输入3到8位数字"><span></span></p>
        <p>密码:  <input name="password" type="password" reg="^\d{6,8}$" tip="请输入6到8位数字密码"><span></span></p>
        <p>地址:  <input name="address"  type="text" reg="^.{0,50}$" tip="请输入0到50地址"><span></span></p>
        <p><input type="submit" value="注册"></p>

</form>
        
</body>
</html>

效果如下:

相关文章

网友评论

      本文标题:7 jquery中ajax

      本文链接:https://www.haomeiwen.com/subject/hrtivftx.html