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

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

原文地址:https://www.cnblogs.com/ethanSung/p/14111659.html