Ajax使用总结(实用)。

本文介绍了AJax请求的具体实现方法,包括使用JQuery发送AJax请求的示例代码,请求失败时如何进行调试,以及如何处理AJax请求的成功与失败响应。此外还探讨了同步与异步请求的区别。

①发送AJax请求。我用的JQuery,到底用哪个好?

使用下面这种最好,功能最全面。方便调试错误: 请求发送失败,返回值响应函数体没执行(alert测试是否执行)。

if (formData!=null && formData!=undefined) {
            $.ajax({
                url: '${baseAppPath}/system/role/update',
                type: 'POST',
                data: formData,
                //dataType: 'json',
                success: function (data) {
//                    alert("data:"+data)
                    window.location.href="${baseAppPath}/system/role/index?param="+new Date();
                },
                error: function (msg) { //响应函数的参数!!!。alert可以查看 请求的详细信息。【方便快速查错!!!曾在这里浪费很久时间】
                    alert("msg:"+msg)
                }
            });

        }

②请求成功(200),但是controller返回值响应函数总是 执行error:function(){}的错误。

解决:去掉dataType:'json'

controller:

 @RequestMapping("/update")   //====修改后update
    public void update(Integer roleId,RoleDO roleDO, String permissionIds,HttpServletResponse response) {

        try {
//            RoleDO 没有roleId属性
            roleDO.setId(roleId);
            System.out.println("===[roleId]:"+roleId);
            if (permissionIds!=null && roleId!=null) {
                roleService.updateRole(roleDO, permissionIds);
                response.setCharacterEncoding("utf-8");
                PrintWriter writer = response.getWriter();
                writer .write("[{'success':true}]");//===默认返回String。不是json对象
                writer.close();
            }
        }catch (Exception e){
            e.printStackTrace();
//            return "{'success':false}";
        }

    } 

③ async异步属性(没有特俗需要用不到(需要在请求发送后,后面js代码里 接收请求返回数据时。才需要async:false))

默认是true。AJax本就是异步发请求,局部刷新页面。。。

var treeNode; //====请求外部,接收 Ajax请求返回的数据===ztree菜单节点
        if (roleId!=undefined  &&  roleId!=null) {//====有roleId才回显
            $.ajax({
                url: "${baseAppPath}/system/permission/findByRoleId",//====查询要回显的
                data: {"roleId": roleId},
                type: 'post',
                async: false,
                dataType: "json",
                success: function (permissions) {
                    treeNode = permissions;
                }
            });
        }//=============================if roleId!=null

 if (treeNode.length > 0) {
                    var treeObj = $.fn.zTree.getZTreeObj("menuTree");
                    //遍历勾选角色关联的菜单数据
                    //alert("treeNode.length:"+treeNode.length)
                    for (var i = 0; i < treeNode.length; i++) {
                        //if (treeNode[i].parentId != 0 && !("0" == treeNode[i].parentId )) {//只排除了一级父菜单
                            var nodes = treeObj.getNodesByParam("id", treeNode[i].id, null);
                            treeObj.checkNode(nodes[0], true, false);//第3个参数false,父子节点不级联勾选子节点
                        //}
                    }












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值