zoukankan      html  css  js  c++  java
  • JQuery的Ajax中参数和后台json数据的问题

    初学Ajax,对于前端的function函数中的参数有疑问,这个参数是否必须跟后台返回的json等数据的key值必须一致还是说随意命名即可。对着一个项目各种改动发现都没法生效,也验证不了我的想法。
    搜了一些资料理论如下:
    function中的参数就是后台返回回来的数据,以json类型的数据为例,那么得到的就是后台返回过来的json数据,如何得到后台返回的json,就是该参数.json的key.如下代码举例说明。

    前端Ajax代码

    $.ajax({
    type:"GET",
    url:path+"/jsp/user.do",
    data:{method:"pwdmodify",oldpassword:oldpassword.val()},
    dataType:"json",
    success:function(kkkdare){
    	if(kkkdare.rel == "true"){//旧密码正确
    		validateTip(oldpassword.next(),{"color":"green"},imgYes,true);
    	}else if(kkkdare.rel == "false"){//旧密码输入不正确
    		validateTip(oldpassword.next(),{"color":"red"},imgNo + " 原密码输入不正确",false);
    	}else if(kkkdare.rel == "sessionerror"){//当前用户session过期,请重新登录
    		validateTip(oldpassword.next(),{"color":"red"},imgNo + " 当前用户session过期,请重新登录",false);
    	}else if(kkkdare.rel == "error"){//旧密码输入为空
    		validateTip(oldpassword.next(),{"color":"red"},imgNo + " 请输入旧密码",false);
    	}
    },
    error:function(data){
    	//请求出错
    	validateTip(oldpassword.next(),{"color":"red"},imgNo + " 请求错误",false);
    }
    });
    

    后端的servlet代码

    public void pwdModify(HttpServletRequest req, HttpServletResponse resp){
        //拿到session
        User userSession = (User) req.getSession().getAttribute(ConstantField.USER_SESSION);
        String oldpassword = req.getParameter("oldpassword");
        Map<String,String> resultMap = new HashMap<String,String>();
        if(userSession == null ){//session过期了
            //resultMap.put("result","sessionerror");
            resultMap.put("rel","sessionerror");
        }else if(StringUtils.isNullOrEmpty(oldpassword)){//旧密码为空
            resultMap.put("rel","error");
        }else {
            if(oldpassword.equals(userSession.getUserPasswd())){//旧密码输入正确
                resultMap.put("rel","true");
            }else {//旧密码输入不正确
                resultMap.put("rel","false");
            }
        }
        resp.setContentType("application/json");
        String jsonString = JSON.toJSONString(resultMap);
        try {
            PrintWriter writer = resp.getWriter();
            writer.write(jsonString);
            writer.flush();
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    

    前端的function(kkkdare)函数中的参数随便命名,只要后台返回的json的key值跟kkkdare.key一致就行了。以上述代码为例,只要kkkdare.rel跟后台的json键值对的key命名一致就行,都叫rel/result...都行。

    初学者如果换个命名发现无法使用,清空浏览器的缓存即可。

  • 相关阅读:
    C++雾中风景14:CRTP, 模板的黑魔法
    ClickHouse源码笔记1:聚合函数的实现
    C++雾中风景番外篇4:GCC升级二三事
    C++雾中风景13:volatile解惑
    AeroSpike踩坑手记1:Architecture of a Real Time Operational DBMS论文导读
    Linux 程序设计1:深入浅出 Linux 共享内存
    C++雾中风景番外篇3:GDB与Valgrind ,调试代码内存的工具
    C++雾中风景番外篇2:Gtest 与 Gmock,聊聊C++的单元测试
    C++雾中风景12:聊聊C++中的Mutex,以及拯救生产力的Boost
    用TensorFlow搭建一个万能的神经网络框架(持续更新)
  • 原文地址:https://www.cnblogs.com/ethanSung/p/14111659.html
Copyright © 2011-2022 走看看