大家好,我有下一个ajax登录电话。我序列化表单并将数据发送到服务器并返回重定向url链接。我的问题是我发布后的网址就像
http://localhost:50802/?username=&password= and not http://localhost:50802/Home
$.ajax({
type: "POST",
url: "Login/Login",
dataType: 'json',
contentType: "application/json; charset=utf-8",
data: loginJson,
cache: true,
async: false,
complete: function (result) {
alert(result.link);
window.location.replace = "/Home/Index";
},
error: function () {
$("#username").val("");
$("#password").val("");
alert("Wrong Username or Password!");
}
}); //end ajax call
答案 0 :(得分:0)
看起来您在提交按钮的$.ajax
事件中或在表单的.click
事件中编写了此.submit
调用,而没有通过从回调中返回false来取消默认操作或者通过在论证上调用preventDefault
。以下是您的代码的外观:
$('#id_of_your_form').submit(function(e) {
e.preventdefault(); // <-- That's what I am talking about and what you forgot
$.ajax({
type: "POST",
url: "Login/Login",
dataType: 'json',
contentType: "application/json; charset=utf-8",
data: loginJson,
cache: true,
async: false,
complete: function (result) {
window.location.replace = "/Home/Index";
},
error: function () {
$("#username").val("");
$("#password").val("");
alert("Wrong Username or Password!");
}
}); //end ajax call
});
另外async: false,
?????你知道这是做什么的,对吗?这不是AJAX。这是对您的网络服务器的阻塞同步调用,在此期间客户端浏览器将被冻结,就像在冰河世纪2期间破坏所有用户体验一样。
答案 1 :(得分:0)
尝试在提交功能结束时返回false
$('#id_of_your_form').submit(function(e) {
$.ajax({
type: "POST",
url: "Login/Login",
dataType: 'json',
contentType: "application/json; charset=utf-8",
data: loginJson,
cache: true,
async: false,
complete: function (result) {
window.location = "/Home/Index";
},
error: function () {
$("#username").val("");
$("#password").val("");
alert("Wrong Username or Password!");
}
}); //end ajax call
return false; });
另一种选择当然是从控制器返回正确的重定向链接,而不是在java脚本中覆盖它。