• 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...都行。

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

  • 相关阅读:
    Android 中向本地保存图片的时候,不在图库显示
    shopfiy 二次开发之自定义 sections
    shopfiy 二次开发之条件判断
    Linux中为RabbitMQ调整文件句柄数和socket连接数
    python helium 安装使用
    python log 打印
    linux 查看服务器登录失败的ip和次数
    在阿里云WINDOWS机器上部署的JAVA SpringBoot 时不时的无效 。
    打开TLS 1.1和1.2而不影响其他协议
    美团供应链架构演进
  • 原文地址:https://www.cnblogs.com/ethanSung/p/14111659.html
Copyright © 2020-2023  润新知