AJAX

1、AJAX= 异步 JavaScript 和 XML。实现不加载新页面的前提下更新页面。

 

2、工作原理:

 

  浏览器首先触发事件,创建一个XMLHttpRequest对象,发送Http请求,通过网络到达服务器,服务器处理Http请求,然后创建一个回复发送数据到浏览器,通过网络回到浏览器,浏览器利用JavaScript处理返回的数据,更新页面文本。

 

3、AJAX的基础就是XMLHttpRequest(XHR),XMLHttpRequest用于在后台与服务器进行数据传递,因此无需再次加载新的页面

  【1】、创建XMLHttpRequest对象

    浏览器会在内部自己创建XMLHttpRequest对象。

variable=new XMLHttpRequest();

  【2】、向服务器发送请求

    如果需要向服务器发送请求,可以使用open和send方法。

    XMLHttpRequest 对象如果要用于 AJAX 的话,其 open() 方法的 async 参数必须设置为 true:

xmlhttp.open("GET","ajax_info.txt",true);//(方式,url,是否使用异步async参数)
xmlhttp.send();

  【3】、服务器相应

如果是XML格式的就用responseXML

 document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

 

4、以上是AJAX本本身的技术,jquery中有.ajax()方法,可以更简单的使用ajax技术进行前后端数据的异步传输。

  其中重要的参数有:

    1、url:指前端数据向后端传输的后端接收地址

    2、date:指前端向后端传送的数据

    3、type:指前端向后端传输的method(post和get)

    4、dateType:指后端向前端传返回值的数据类型(text    text josn等)

    5、success:通常里面是一个函数function(date){},data为返回的数据,在方法体内写如何处理返回值。

实例:

前端:

var url = "/test/check";
    $.ajax({
        type: "post",
        url: url,
//      data: "para="+para,  此处data可以为 a=1&b=2类型的字符串 或 json数据。
        data: {"para":1},//json类型
        cache: false,
        async : false,
        dataType: "json",
        success: function (data ,textStatus, jqXHR)
        {
            if("true"==data.flag){
               alert("合法!");
                return true;
            }else{
                alert("不合法!错误信息如下:"+data.errorMsg);
                return false;
            }
        },
        error:function (XMLHttpRequest, textStatus, errorThrown) {      
            alert("请求失败!");
        }
     });

后端:

/**
     * 校验
     *
     * @return void
     */
    public void check(){
        Map<String,String> result = new HashMap<String,String>();//使用hashmap来接收json对
        boolean flag = false;
        try{
            String para= getPara("para");//在servlet中使用reqest.getparameter("para")方法来获取前端参数。
   
      //校验 代码...
            result.put("flag", "true");
            renderJson(result);//返回json数据
        }catch(Exception e){
            result.put("flag", flag+"");
            result.put("errorMsg", e.getMessage());
            renderJson(result);//返回json数据
            e.printStackTrace();
        }
    }

 使用servlet的话,后端这样响应:

List<Map<String,Object>> list = bo.selectData();
response.setContentType("application/json;charset=GBK");
PrintWriter out=response.getWriter();       
out.write(JSONArray.fromObject(list).toString());//使用alibaba的fastjson的话用JSON.tojson()方法
out.flush();
out.close();

 

posted @ 2018-03-24 18:59  彩电  阅读(162)  评论(0编辑  收藏  举报