木心

毕竟几人真得鹿,不知终日梦为鱼

导航

jquery实现ajax提交表单数据或json数据

  ajax :异步请求,浏览器地址栏不改变,进行局部刷新

1、jQuery 的ajax的方法
    - 第一层:$.ajax(...) 最底层ajax请求,编写最复杂,完成功能最全的。
    - 第二层:load() 、$.get() 、$.post()  开发中常用3个
    - 第三层:$.getJSON()  、$.getScript() 高级开发
        $.getJSON() 可以完成js"跨域"请求
            域名:域名+端口+项目,js默认不能跨域请求。
        $.getScript()  动态加载js文件。之前使用<script src="">加载页面时,一并加载js文件

 

第二层的方法:$().load() 、$.get() 、$.post()

2、$.get()
        格式:jQuery.get(url, [data], [callback], [type])
        参数1:url ,请求路径,例如:var url = "/ee19_jquery_day02/SendDataServlet";
        参数2:data,请求参数,例如:var params = {"username":"杰克", "password":"1234"};
        参数3:callback,回调函数;回调函数3个参数,分别为服务器响应数据,状态(success成功,error错误),ajax引擎
        参数4:type ,返回内容格式,xml, html, script, json, text, _default
            
        响应数据,如果使用  application/json;charset=UTF-8 ,jQuery自动将数据转换json对象。
        响应数据,如果使用  text/html;charset=UTF-8 ,回调函数获得字符串数据,需要手动转换。
        使用“参数4”,设置"json",jQuery将字符串 转换成 json对象
        
        使用例子:

$.get(url,params,function(data){
    alert(data);
},"json");

3、$.post()

  格式:jQuery.post(url, [data], [callback], [type])
  使用例子:

$.post(url,params,function(data){
        alert(data);
},"json");

 

4、$.load()

    格式:load(url, [data], [callback])
    load()函数 ,必须使用jquery对象(任何的jquery对象都可以),一般$(this).load(url,params,fn);
    如果没有请求参数,发送的GET请求
    如果有请求参数,发送的POST请求。请求没有中文乱码
    load()永远获得字符串,如果需要使用,必须手动转换json对象
        var jsonData = eval("("+data+")");
        alert(jsonData.message);

    使用例子:

$(this).load(url,params,function(data){
    //转换json对象
    var jsonData = eval("("+data+")");
    alert(jsonData.message);
});

 

5、第一层的方法:$.ajax()

/*  $.ajax() 底层功能最强大的
     * * 格式:jQuery.ajax([settings])
     *         参数settings:设置所有的参数
     *             url:发送请求的地址
     *             data:发送到服务器的数据,请求参数
     *             type:请求方式 ("POST" 或 "GET"),
     *             success:成功的回调函数,success(data, textStatus, jqXHR)
     *             error:请求失败时调用此函数
     *             dataType:预期服务器返回的数据类型
     *                 "xml": 返回 XML 文档,可用 jQuery 处理。
     *                 "html": 返回纯文本 HTML 信息;包含的script标签会在插入dom时执行。
     *                 "script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了"cache"参数。'''注意:'''在远程请求时(不在同一个域下),所有POST请求都将转为GET请求。(因为将使用DOM的script标签来加载)
     *                 "json": 服务器返回JSON数据 。
     *                 "jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
     *                 "text": 返回纯文本字符串
     */

$.ajax({
    "url":url,
    "data":params,
    "type":"POST",
    "success":function(data){
        alert(data);
    },
    "error":function(){
        alert("服务器繁忙,请稍后重试");
    },
    "dataType":"json"
});

  注意:如果dataType : 'text',告诉浏览器,服务器返回纯文本字符串,但是服务器返回json字符串,数据需要使用eval()方法执行,如下

$.ajax({
    url : '${pageContext.request.contextPath}/json/menu.json',
    type : 'POST',
    dataType : 'text',
    success : function(data) {
        var zNodes = eval("(" + data + ")");  //如果dataType:'json',这句要注解掉
        $.fn.zTree.init($("#treeMenu"), setting, zNodes);
    },
    error : function(msg) {
        alert('菜单加载异常!');
    }
});

---

posted on 2019-12-15 15:06  wenbin_ouyang  阅读(1537)  评论(0编辑  收藏  举报