我正试图用这样的JQuery发布:
$.post("NiceController/Create/", { field1: data1, field2: data2 },
function(data, textStatus) {
if (data.Status)
//Do something
}, "json");
问题是,当我未经过身份验证时,我不会被重定向到登录页面,因为它不是完整的表单提交。问题是:我如何以编程方式知道我未经过身份验证并应重定向到登录页面?
答案 0 :(得分:1)
我不知道是否有更正式的答案,但您可以先$.get('NiceController/AmILoggedIn')
吗?然后,根据那里的响应,$.post
或通过登录页面进行某种重定向?
答案 1 :(得分:1)
如果使用ajax
方法,则应该能够添加错误处理功能。我相信,既然你要求使用JSON,那么parseerror
应该被返回,因为你要回来的是重定向,而不是JSON。您也可以使用全局ajaxError
处理程序获得相同的效果并继续使用post。
答案 2 :(得分:1)
我假设你的NiceController/Create/
重定向到登录页面,这就是你所看到的。您可以从登录页面获取一堆HTML,而不是一个好的状态。
您有两个选项:从“创建”操作中删除Authorize
属性,并在内部处理它,例如通过返回JSON错误消息。
或者:首先检查您是否已登录,然后仅在用户登录时调用“创建”操作
答案 3 :(得分:0)
您可以执行以下操作:
$.post("NiceController/Create/", { field1: data1, field2: data2 },
function(data, textStatus) {
if (data.Status)
if(data.Status == 'authFailed') {
window.location.href = '/login';
}
}
}, "json");