首先,我将尝试解释我想做的事情:
我有一个创建动态子域的系统,每个子域都有自己的数据库和规则集。在我的主页面中,我有一个登录表单,用于根据给定的电子邮件访问正确的子域。没关系,但我需要的是:
在检查哪个是正确的子域之后,脚本应该如何将表单操作更改为登录并重定向到给定的子域?
我的脚本代码是这样的:
function myJson(url, postData) {
Jsondata = $.ajax({
url : url,
data : postData,
type : 'post',
dataType : 'json',
async : false
}).responseText;
return jQuery.parseJSON(Jsondata);
}
$(function() {
function beforeRequest(formData, jqForm) {
var url = jqForm.attr('action');
var data = jqForm.serialize();
var jsonData = myJson(url, data);
if (jsonData.success == true) {
jqForm.attr('action',jsonData.loginUrl);
} else {
$("#login-form > .error-tooltip").find('span').empty().text(jsonData.msg).end().fadeIn(300);
return false;
}
return true;
}
$("#login-form").submit(function() {
$(this).ajaxSubmit({
beforeSubmit : beforeRequest
});
return false;
})
})
如果有一种方法可以在没有插件的情况下执行此操作ajaxForm(根本没有插件)将非常有必要。
我制作的这个脚本,它进行验证,更改了表单操作,但它没有重定向。
我缺少什么?
答案 0 :(得分:0)
你不能简单地在if
块中重定向,如
if (jsonData.success == true) {
location.href='your sub domain to redirect to';
答案 1 :(得分:0)
我想通了,感谢我的一位朋友。问题是在子域中登录,它以302状态响应,而jquery ajax上的成功只需要状态200,这是有效的代码:
$("#login-form").submit(function(e) {
e.preventDefault();
var url = $(this).attr("action");
var data = $(this).serialize();
$.ajax({
url : url,
data : data,
type : 'post',
dataType : 'json',
beforeSend : function() {
$("#login-form > .error-tooltip").fadeOut(300);
},
success:function(jsonData){
if(jsonData.sucsess == true){
$.ajax({
url: jsonData.loginSite,
data:data,
type:'post',
complete:function(){
window.location = jsonData.site;
}
})
}else{
$("#login-form > .error-tooltip").find('span').empty().text(jsonData.msg).end().fadeIn(300);
}
}
})
})