ajax

作者: 哈哈海 | 来源:发表于2016-11-08 22:23 被阅读0次

ajax不是一种新的编程语言,是指一种对网页某部分进行更新的技术,局部刷新,多个事件并行发生 ,事件不会相互影响,请求之后不刷新整张页面,页面不动,只是刷新页面的局部。
它的核心对象是XMLHttpRequest 是一个JavaScript对象 存在浏览器差异。当服务器端的响应不是简单的字符串类型而是集合或者对象时,则无法将对象响应给客户端 这时候 就用到了json 需要将对象以json字符串的形式响应给ajax。对应响应为对象类型的json字符串,响应内容不能直接使用,这时候需要将json字符串转化为js对象才可以在js中使用:success:function(result){
var user = $.parseJSON(result);// 将json字符串转化为js对象
alert(user.id);//获取js对象中的值
}

Paste_Image.png

1.fastjson将对象转换为json

String json = JSONObject.toJSONStringWithDateFormat(user,"yyyy年MM月dd日");

2.将json输出到后台

HttpServletResponse resp = new ServletActionContext.getResponse();
// 设置响应头
resp.setContentType("application/json;charset=UTF-8");
resp.getWriter().print(json);

3.gson将 集合转换json字符串

//Gson转换对象为json字符串
        /*String json2 = new Gson().toJson(user);
        System.out.println(json2);*/
        Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create();
        String json2 = gson.toJson(list);
        System.out.println(json2);

4.ajax核心xhr get请求 及流程

<script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
  <script type="text/javascript">
      $(function(){
          //给用户名注册失去焦点事件
          $("#name").blur(function(){
              var username = $(this).val();
              //1.创建xhr
              var xhr;
              if(window.XMLHttpRequest){
                 xhr = new XMLHttpRequest();
              }else{
                 xhr = new ActiveXObject("Microsoft.XMLHTTP");
              }
              //2.发送请求并传递参数
              xhr.open("GET","/ajax_day1/user/checkUsername?username="+username);
              xhr.send();
              //3.处理响应(完整正确的响应)
              xhr.onreadystatechange = function(){
                //处理完整  正确
                if(xhr.readyState==4 && xhr.status==200){
                    //alert(xhr.responseText);
                    $("#usernameMessage").text(xhr.responseText);
                }
             }
          });
      
      
      
      
      });
  
  </script>
 </head>
  
  <body>
  
    <form method="post" action="" enctype="application/x-www-form-urlencoded">
        用户名:<input type="text" id="name" name="name" /><span id="usernameMessage"></span><br/>
        密码:<input type="text" name="password" /><br/>
        <input type="submit" value="提交" /><br/>
    </form>
  </body>

一些小知识点:
1.$("#usernameMessage").html("<font color='red'>"+result+"</font>");
2.<form method="post" action="" enctype="application/x-www-form-urlencoded">
注意:enctype
3.将json字符串转为js对象 eval 与 append的运用

                       //result 是一个json类型的字符串
                    //将json字符串转为js对象|数组
                    var jsObject = eval("("+result+")");
                    var nameLi = $("<li></li>").text("姓名:"+jsObject.name);
                    var ageLi = $("<li></li>").text("年龄:"+jsObject.age);
                    var birLi = $("<li></li>").text("生日:"+jsObject.bir);
                    
                    //添加
                    $("#ul").append(nameLi).append(ageLi).append(birLi);
                    
                    //显示
                    $("#ul").show(2000);



 <body>
   <input type="button" id="btn" value="通过ajax展示一个人"/><br/>
   <ul id="ul" style="display: none;">
     
   </ul>
   
  </body>

5.Jquery框架封装的ajax发送ajax请求
$.ajax
$.post
$.get

<script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
  <script type="text/javascript">
      $(function(){
      
          /*    $("#btn").click(function(){
            
            }); */
            //live 既可以给页面中原有的标签注册事件 也可以给生成的标签注册事件
            $("#btn").live("click",function(){
                //发送ajax异步请求
                /* $.ajax({
                    type:"POST",
                    url :"/ajax_day2/user/findUser",
                    dataType:"JSON",//预期数据为json   text/plain  text    application/json  json     text/xml application/xml   xml
                    success:function(result){
                        $("#ul").empty().hide(1000);
                        console.log(result);
                        //当服务器端的响应类型设置为application/json时 jquery框架自动将json字符串转换为js对象|数组
                        //当服务器端没有设置响应类型 但是在ajax中设置了dataType属性为json时 Jquery框架也会自动将结果转换为js对象|数组
                        //注意:当服务器端没有设置响应类型时 且 ajax函数中没有设置dataType时   result一定是json字符串 使用时需要转为js对象|数组处理
                        //推荐:使用 后端服务器设置相应类型   并且  前端ajax函数中设置dataType 属性  
                        var nameLi = $("<li></li>").text("姓名:"+result.name);
                        var ageLi = $("<li></li>").text("年龄:"+result.age);
                        var birLi = $("<li></li>").text("生日:"+result.bir);
                        $("#ul").append(nameLi).append(ageLi).append(birLi).show(2000);
                    }
                }); */
                /* $.get("/ajax_day2/user/findUser",function(result){
                    $("#ul").empty().hide(1000);
                    var nameLi = $("<li></li>").text("姓名:"+result.name);
                    var ageLi = $("<li></li>").text("年龄:"+result.age);
                    var birLi = $("<li></li>").text("生日:"+result.bir);
                    $("#ul").append(nameLi).append(ageLi).append(birLi).show(2000);
                },"JSON"); */
                 $.post("/ajax_day2/user/findUser","name=zhangsan",function(result){
                    $("#ul").empty().hide(1000);
                    var nameLi = $("<li></li>").text("姓名:"+result.name);
                    var ageLi = $("<li></li>").text("年龄:"+result.age);
                    var birLi = $("<li></li>").text("生日:"+result.bir);
                    $("#ul").append(nameLi).append(ageLi).append(birLi).show(2000);
                },"JSON"); 
            });
      
      });
  </script>
 </head>
  
  <body>
  
   <input  type="button" id="btn" value="展示一个人"/><br/>
   <ul id="ul" style="display: none;">
    
   </ul>
  </body>

6.省市县 三级联动

<script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
  <script type="text/javascript">
    $(function(){
          
          //发送ajax请求加载所有省份信息
          $.ajax({
            type:"POST",
            url:"user/queryProvinces",
            dataType:"JSON",
            success:function(result){
                console.log(result);
                //遍历省份信息
                /* $.each(result,function(i,province){
                    var poption = $("<option></option>").text(province.name).val(province.code);
                    $("#sheng").append(poption);
                }); */
                createOption(result, $("#sheng"));
                //省的下拉列表改变
                $("#sheng").change();
            }
          });   
          
          //当省份的下拉列表改变
          $("#sheng").change(function(){
                $("#shi").empty();
                //获取当前选中的option属性的值 value
                var provinceCode = $(this).val();
                //console.log(provinceCode);
                //发送ajax请求传递省份的编号到后台
                $.get("user/queryCitys",{"provinceCode":provinceCode},function(result){
                    /* $.each(result,function(i,city){
                        var coption = $("<option></option>").text(city.name).val(city.code);
                        $("#shi").append(coption);
                    }); */
                    createOption(result, $("#shi"));
                    //市的下拉列表改变
                    $("#shi").change();
                },"JSON");
          });
          
          
          //当市改变发送ajax其请求获取当前市下的所有县
          
          $("#shi").change(function(){
            $("#xian").empty();
            var cityCode = $(this).val();
            
            //发送post请求根据市的编号查询所有县
            $.post("user/queryAreas","cityCode="+cityCode,function(result){
                /* $.each(result,function(i,area){
                    var xoption = $("<option></option>").text(area.name).val(area.code);
                    $("#xian").append(xoption);
                }); */
                createOption(result, $("#xian"));
            },"JSON");
          });
    });
    
    function  createOption(result,parent){
        $.each(result,function(i,res){
            var coption = $("<option></option>").text(res.name).val(res.code);
            parent.append(coption);
        });
    }
  </script>
  
  
  </head>
  
  <body>
        省:<select id="sheng"></select>
        市:<select id="shi"></select>
        县:<select id="xian"></select>
  </body>

相关文章

  • AJAX

    主要内容: ajax 是什么、原生ajax 写法和jQuery ajax写法。 AJAX 是什么 ajax,即As...

  • JavaScript进阶知识点--AJAX及JSON

    AJAX 关于 AJAX 什么是 AJAX AJAX 的全称是 Asynchronous JavaScript a...

  • HTML5权威指南 | 第五部分 高级功能

    三十二、使用AJAX(上) Ajax起步: 使用Ajax事件: Ajax请求的错误处理: 中止Ajax请求: 三十...

  • ajax学习笔记

    Ajax学习笔记 Ajax简介 1. Ajax是什么? Ajax : Asynochronous javascri...

  • AJAX

    一、简介 AJAX菜鸟教程 什么是 AJAX ? AJAX = 异步 JavaScript 和 XML。 AJAX...

  • js之AJAX复习

    异步交互和同步交互 什么是Ajax? Ajax的工作原理。 Ajax包含的技术: Ajax的缺陷: Ajax的核心...

  • 复习jQuery - ajax

    jQuery ajax - ajax() 方法 $.ajax({ url:'oo.php', ...

  • jQuery中Ajax请求的使用和四个步骤示例

    ajax() 方法用于执行 AJAX(异步 HTTP)请求,所有的 jQuery AJAX 方法都使用 ajax(...

  • ajax

    1、什么是ajax? 2、ajax的原理 3、ajax的核心对象 4、ajax的优点: ajax的缺点: 被jqu...

  • ajax

    Ajax 1 - 请求纯文本 Ajax 2 - 请求JSON数据 Ajax 3 - 请求Github接口 Ajax...

网友评论

      本文标题:ajax

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