用ajax请求实现表单提交并页面跳转的问题

使用的是SpringBoot框架,部分代码如下
JS代码:
function login() {
var userName = $("#inputName").val();
var userPassword = $("#inputPassword").val();
var rememberUser = $("input[type=checkbox]").get(0).checked;
$.ajax({
url : "login/userLogin",
type : "post",
dataType : "json",
data : {
"userName" : userName,
"userPassword" : userPassword
},
success : function(result) {
if (result.status == 1) {
if (rememberUser) {
addCookie("userName", userName, 30);
} else {
delCookie("userName");
}
window.location.href = "menu.html";
} else if (result.status == 0) {
alert(result.message);
}
}
});
return false;
}
Controller代码:
@RequestMapping(value = "login/userLogin", method = RequestMethod.POST)
@ResponseBody
public Result login(User user) {
Result result = userService.login(user);
return result;
}
登录form提交后,每次都是显示返回的json,而不是跳转到menu.html,应该怎么改
图片说明

8个回答

说明你的result要么没有返回,要么你返回的result!=1;没有执行windows.location.href

overlordLSY
overlordLSY 回复qq_29632867: 搞明白为啥了,是我导入的前一个js文件中有语法错误,这个js文件根本就没加载,是html中form的action提交的,略坑...
大约一年之前 回复
qq_29632867
qq_29632867 你的这个result.status试下 == '1'
大约一年之前 回复

if (result.status == 1) 需要解析下,你的图只是说明你调用了success函数,没有跳转页面,说明没进这个判断里。
**尝试下: **
解析下看看
var obj = eval('(' + result + ')');
alert( obj.status);

caozhy
贵阳老马马善福专门编写代码的老马就是我! 这个用户多次恶意自己采纳自己的回答。建议管理员封杀
4 个月之前 回复
overlordLSY
overlordLSY 回复qq_23126581: 搞明白为啥了,是我导入的前一个js文件中有语法错误,这个js文件根本就没加载,是html中form的action提交的,感谢回答
大约一年之前 回复
qq_23126581
玄元复始道生初,守一无穷尽万物 回复overlordLSY: 应该不会吧,如果在success : function(result) {第一行加了一个alert,结果没有弹出}alert随便什么内容,如果没有弹出,说明没有进入这个success
大约一年之前 回复
overlordLSY
overlordLSY 我在success : function(result) {第一行加了一个alert,结果没有弹出,这是啥情况
大约一年之前 回复
 success : function(result) {
if (result.status == 1) {
if (rememberUser) {
addCookie("userName", userName, 30);
    location.href = '你要跳转的链接'
} 
overlordLSY
overlordLSY 搞明白为啥了,是我导入的前一个js文件中有语法错误,这个js文件根本就没加载,是html中form的action提交的,感谢回答
大约一年之前 回复
overlordLSY
overlordLSY 我那个cookie是要实现记住用户功能,不选中也应该跳转的
大约一年之前 回复

我那个cookie是要实现记住用户功能,不选中也应该跳转的

你这个方法是不是在submit的时候调用的?这个ruturn false是?

overlordLSY
overlordLSY 回复batterMRTAN: 搞明白为啥了,是我导入的前一个js文件中有语法错误,这个js文件根本就没加载,是html中form的action提交的,感谢回答
大约一年之前 回复
batterMRTAN
batterMRTAN 回复overlordLSY: 这个return一般情况下是提交前的校验,正确就return true,让它执行from的action
大约一年之前 回复
overlordLSY
overlordLSY submit,ruturn false貌似是阻止表单自动提交,反正这行加不加都一样有问题
大约一年之前 回复

dataType
类型:String
预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如 XML MIME 类型就被识别为 XML。在 1.4 中,JSON 就会生成一个 JavaScript 对象,而 script 则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数。可用值:
"xml": 返回 XML 文档,可用 jQuery 处理。
"html": 返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行。
"script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了 "cache" 参数。注意:在远程请求时(不在同一个域下),所有 POST 请求都将转为 GET 请求。(因为将使用 DOM 的 script标签来加载)
"json": 返回 JSON 数据 。
"jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
"text": 返回纯文本字符串

overlordLSY
overlordLSY 搞明白为啥了,是我导入的前一个js文件中有语法错误,这个js文件根本就没加载,是html中form的action提交的,感谢回答
大约一年之前 回复

去掉@ResponseBody注解,返回String类型,返回"menu"

overlordLSY
overlordLSY 搞明白为啥了,是我导入的前一个js文件中有语法错误,这个js文件根本就没加载,是html中form的action提交的,感谢回答
大约一年之前 回复

其实我觉得现在这个东西用vue.js v-model绑定input框和数据做起来更舒服

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!