我制作了一个名为auth的过滤器,用于检查用户是否已登录。如果没有记录,它会在主页上重定向,但如果是调用ajax?我刚检查一下是不是。如果是我只是发送一个json状态" no-log"。现在我收到了我的json回复" no-log"在我的客户端上,我想打开一个模式来询问登录名和密码。我想要的解决方案很容易为每个ajax请求一个if语句来检查响应状态是否为" no-log"并显示模态的功能。虽然课程对未来的更新不利,我正在寻找一个好的解决方案,我可以绑定这个事件,如果我想在未来添加其他状态。有什么建议吗?
Route::filter('auth', function()
{
if (Auth::guest()) {
if ( !Request::ajax() ) {
Session::put('loginRedirect', Request::url());
return Redirect::to('/');
} else {
$status = "no-log";
return json_encode(array('status' => $status));
}
}
});
调用ajax的一个例子
$(document).on("click", ".delete", function() { // delete POST shared
var id_post = $(this);
bootbox.confirm("Are you sure do want delete?", function(result) {
if (result) {
$.ajax({
type: "POST",
url: '/delete_post/' + USER,
data: { id_post: id_post.attr('id') },
beforeSend: function(request) {
return request.setRequestHeader("X-CSRF-Token", $("meta[name='token']").attr('content'));
},
success: function(response) {
if (response.status == "success") {
id_post.parents('div.shared_box').fadeOut();
}
},
error: function(){
alert('error ajax');
}
});
} else {
console.log("close");
}
});
});
答案 0 :(得分:1)
如果您为所有未登录的请求返回401,则可以使用$.ajaxSetup
来处理应用程序中的所有ajax错误。
$.ajaxSetup({
error: function(jqXHR, exception) {
if (jqXHR.status == 401) {
window.location = 'your-login-page';
}
}
});
答案 1 :(得分:1)
经过10天的探索,我发现了一种覆盖 ajax comportment的方法:
只需要用自定义的$.ajax()
替换每个$(document).on("click", ".delete", function() { // delete POST shared
var id_post = $(this);
bootbox.confirm("Are you sure do want delete?", function(result) {
if (result) {
myCustomAjax({ // In place of $.ajax({
type: "POST",
...
。
如果我重复使用您的代码:
function myCustomAjax(options) {
var temporaryVariable = options.success;
options.success = function (data, textStatus, jqXHR) {
// Here you can check jqXHR.responseText which contain your JSON reponse.
// And do whatever you want
// If everithing is OK you can also decide to continue with the previous succeed callback
if (typeof temporaryVariable === 'function')
temporaryVariable(data, textStatus, jqXHR);
};
return $.ajax(options);
}
然后,这个自定义函数允许您在每个ajax回调之前或之后添加一些操作:
例如,检查JSON返回值以决定是否触发成功回调,或者显示警告:
{{1}}