写代码要修改用户的信息,写了三个ajax,第一个写完测试没有问题,后面俩逻辑一样的就直接赋值了,结果复制的第二个不好使。中文会出现%乱码
$.ajax({ //返回参数正常
url: '/editAdmin/' + id + '/' + userName + '/' + password,
type: 'post',
contentType:'application/json;charset=utf-8',
dataType: 'text',
data: {
'id': id,
'userName': userName,
'password': password,
},
success: function (res) {
if (res == "success") {
layer.msg('提交成功');
} else {
layer.msg("提交失败");
}
}
})
$.ajax({//中文参数乱码
url: '/editTeach/' + teacherId + '/' + userName + '/' + age + '/' + sex + '/' + dept + '/' + phone + '/' + professional,
type: 'post',
contentType: 'application/json;charset=utf-8',
dataType: 'text',
data: {
'teacherId': teacherId,
'userName': userName,
'age': age,
'sex': sex,
'dept': dept,
'phone': phone,
'professional': professional
},
success: function (res) {
if (res == "success") {
layer.msg('提交成功');
} else {
layer.msg("提交失败");
}
}
})
在第二个ajax之前打印要传递的参数是可以获取到的,没有乱码,一进ajax就乱码了。三个ajax基本都是一样的其他两个都能传中文参数。
$.ajax({
url: '/editStu/' + studentNumber + '/' + userName + '/' + age + '/' + studentClass + '/' + grade,
type: 'post',
dataType: 'text',
contentType: 'application/json;charset=utf-8',
data: {
'studentNumber': studentNumber,
'userName': userName,
'age': age,
'studentClass': studentClass,
'grade': grade
},
success: function (res) {
if (res == "success") {
layer.msg('提交成功');
} else {
layer.msg("提交失败");
}
}
})
controller代码
@RequestMapping("/editStu/{studentNumber}/{userName}/{age}/{studentClass}/{grade}")
@ResponseBody
public String editStu(@PathVariable("studentNumber") int studentNumber, @PathVariable("userName") String userName, @PathVariable("age") int age, @PathVariable("studentClass") String studentClass, @PathVariable("grade") int grade) {
int res = userService.updateStudent(studentNumber, userName, age, studentClass, grade);
if (res > 0) {
return "success";
} else {
return "fail";
}
}
@RequestMapping("/editTeach/{teacherId}/{userName}/{age}/{dept}/{phone}/{professional}")
@ResponseBody
public String editTeach(@PathVariable("teacherId") int teacherId, @PathVariable("userName") String userName, @PathVariable("age") int age, @PathVariable("dept") String dept, @PathVariable("phone") String phone, @PathVariable("sex") String sex,@PathVariable("professional") String professional) {
int res = userService.updateTeacher(teacherId, userName, age, dept, phone, sex,professional);
if (res > 0) {
return "success";
} else {
return "fail";
}
}
@RequestMapping("/editAdmin/{id}/{userName}/{password}")
@ResponseBody
public String editAdmin(@PathVariable("id") int id,@PathVariable("userName")String userName,@PathVariable("password")String password){
int res = userService.updateAdmin(id,userName,password);
if (res > 0) {
return "success";
}else {
return "fail";
}
}
你的接口既然post传参了,为什么还要在url上加各种参数?你打印你下你的那些参数是不是都有值
array:encodeURI,后端接收用decodeURI。
https://blog.csdn.net/junyu1024/article/details/80528454
url是固定的,后台给你的什么就写什么,不需要手动拼接,就算拼接,你携带参数的时候它们会自己拼接在后边的(get,、delete请求才会),并且以 ?key=value&key=value
的形式
例如 /editAdmin?id=1&userName=张三&password=123
, 这是最终的表现形式,不需要刻意去写成这样,只需要写url和data即可
第一次见到post请求传json还在url上面拼接的
你确认下是不是base64编码,另外,既然使用post请求,那么请求参数放在请求体中即可