ajax传值遇到的各种坑

简介: ajax传值遇到的各种坑

ajax传值遇到的各种坑

1.ajax语法格式:

注意;使用data只能传对象,不能传单参数或多参数,如果要传单参数或多参数的话需要使用拼接字符串的方式或者是使用params{} 的方式传参数

GET传参用params;POST传参用data

functionchange() {
if (checkPassword()) {
axios({
method: 'post',
url: url+'account/updatePassword',
//?password=' + password.value + '&newPassword=' //+ newPassword.value + '&confirmPassword=' //+ confirmPassword.value + '&cardNo=' + cardNo.value,params: {
password: password.value,
newPassword: newPassword.value,
confirmPassword: confirmPassword.value,
cardNo: cardNo.value,
                }
            })
                .then((res) => {
//回调函数新老密码验证成功if (res.data.success) {
alert(res.data.msg)
top.location.href=url+"login";
//验证失败,新老密码不一致                    } else {
alert(res.data.msg);
window.location.href=url+"updatePassword"                    }
                }).catch(function (err) {
console.log(err);
            });
        }
    }
</script>
<scriptth:src="@{/js/axios.min.js}"></script><script>varpassword=document.getElementById('password');
varnewPassword=document.getElementById('newPassword');
varconfirmPassword=document.getElementById('confirmPassword');
varcardNo=document.getElementById("cardNo");
leturl='[[@{/}]]';
functioncheckPassword() {
if (newPassword.value.length<6) {
alert("密码长度必须大于等于6位");
returnfalse;
        }
returntrue;
    }
functionchange() {
if (checkPassword()) {
axios({
method: 'post',
url: url+'account/updatePassword?password='+password.value+'&newPassword='+newPassword.value+'&confirmPassword='+confirmPassword.value+'&cardNo='+cardNo.value,
//使用data只能传对象,不能传单参数或多参数,//如果要传单参数或多参数的话需要使用拼接字符串的方式,如上一行的方法// data: {//     password: password.value,//     newPassword: newPassword.value,//     confirmPassword: confirmPassword.value,//     cardNo: cardNo.value,// }            })
                .then((res) => {
//回调函数新老密码验证成功if (res.data.success) {
alert(res.data.msg)
top.location.href=url+"login";
//验证失败,新老密码不一致                    } else {
alert(res.data.msg);
window.location.href=url+"updatePassword"                    }
                }).catch(function (err) {
console.log(err);
            });
        }
    }
</script>

2.在后台使用map集合存储返回的提示信息时,需要键值对应,如下:

注意一:map.put("success",false/true);括号中的false或true不需要使用" "引起来,如果使用了" "的话在前端ajax的回调函数的res.data.success判断时无法识别为false或者是true,此时只会一直默认为true。

注意二:方法上的注解@ResponseBody是为了将前端ajax传过来的json格式的数据解析,如果不适用@ResponseBody的话,传过来的数据就无法正确解析会报错
注意三:注意二中的@ResponseBody注解还可以在方法名上省略,直接在最外层的类名上面加上注解@RestController即可,一般情况下都是直接在类名上面加@RestController注解


packagecom.fan.controller;
importcom.fan.entity.Account;
importcom.fan.entity.Record;
importcom.fan.service.AccountService;
importcom.fan.service.RecordService;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.stereotype.Controller;
importorg.springframework.ui.Model;
importorg.springframework.web.bind.annotation.*;
importjavax.servlet.http.HttpSession;
importjava.util.Date;
importjava.util.HashMap;
importjava.util.Map;
//@Controller@RestController@RequestMapping("account")
publicclassAccountController {
@PostMapping("updatePassword")
@ResponseBodypublicObjectupdatePassword(@RequestParam("password") Stringpassword, @RequestParam("newPassword") StringnewPassword, @RequestParam("confirmPassword") StringconfirmPassword, @RequestParam("cardNo") LongcardNo) {
Accountaccount=accountService.login(cardNo);
Map<String, Object>map=newHashMap<>(16);
if (!password.equals(account.getPassword())) {
map.put("success", false);
map.put("msg", "您输入的当前账号的密码不正确,请重新输入!");
returnmap;
    }
if (!newPassword.equals(confirmPassword)) {
map.put("success", false);
map.put("msg", "两次输入的密码不一致,请重新输入!");
returnmap;
    }
if (newPassword.equals(confirmPassword) &&password.equals(account.getPassword())) {
accountService.updatePassword(newPassword, cardNo);
map.put("success", true);
map.put("msg", "修改密码成功!");
returnmap;
    }else {
returnnull;
    }
    }
}


相关文章
|
前端开发
ajax 传值数组报错问题
ajax的传值可以直接传递一个数组,解决办法是在调用ajax之前,加上
89 0
|
JSON JavaScript 前端开发
|
JSON 前端开发 JavaScript
Jquery ajax异步传值的两个实用的方法,你看后肯定会用第二个
故名思议,你是个asp.net  或者是搞PHP的或者 是javaweb的 ,但是为了提高界面的效率,你必须会实用jquery的ajax,当然,在ajax异步传值的时候很头疼的一件事情就是,拼接字符串json下面给大家演示一个较为普通的拼写json,话不多少 我直接上code $.
908 0
gdy
|
编解码 JavaScript 前端开发
jQuery Ajax传值给Servlet,在Servlet里Get接受参数乱码的解决方法
  最近在学jquery ui,在做一个小功能的时候需要将前台的值获取到,通过Ajax传递给Servlet,然后再在返回数据结果,但是在Servlet接受参数的时候,通过后台打印,发现接受乱码,代码示例如下: public void doGet(HttpServletRequest reque...
gdy
1755 0
|
前端开发 JavaScript 数据格式
JQuery ajax url传值与data传值的区别
url传中文,乱码,即便charset为 UTF-8, $.ajax({    type: "POST",    cache: false,    url: "/ProductTypeAndCat/AddType?typeName=" + typeName,    contentType: "application/x-www-form-urlencoded; charset=UTF-8",    datatype: "JSON",}); data传中文,正确。
806 0
|
前端开发 数据库
AJAX中文传值乱码问题解决方法
在软件开发过 程中,乱码问题一直都是我们最头痛的事,页面的编码,开发环境的编码,数据库的编码,有一个不一致都有可能导致乱码问题的发生;有的很好解决,有的很棘 手;当你使用AJAX技术时,为调用的后台方法传值是必不可少的,英文和数字还好解决,一般不会出现乱码,介是如果是要传中文的字符呢?很容易就会乱掉, 因为在你使用编码的时候一般会默认:BG2312,而Ajax默认使用的是UTF
1884 0
|
XML 前端开发 JavaScript
什么是Ajax和jquery
什么是Ajax和jquery
90 0
|
7月前
|
JSON 前端开发 Java
利用Spring Boot处理JSON数据实战(包括jQuery,html,ajax)附源码 超详细
利用Spring Boot处理JSON数据实战(包括jQuery,html,ajax)附源码 超详细
171 0
|
7月前
|
敏捷开发 JavaScript 前端开发
❤❤❤【Vue.js最新版】sd.js基于jQuery Ajax最新原生完整版for凯哥API版本❤❤❤
❤❤❤【Vue.js最新版】sd.js基于jQuery Ajax最新原生完整版for凯哥API版本❤❤❤
|
7月前
|
前端开发 JavaScript
Jquery ajax捕获错误信息
Jquery ajax捕获错误信息
64 0