Опубликовать с использованием JQuery в ASP.NET MVC-завернутый действия - PullRequest
1 голос
/ 18 июня 2009

Я пытаюсь опубликовать сообщение с помощью JQuery следующим образом:

$.post("NiceController/Create/", { field1: data1, field2: data2 },
function(data, textStatus) {
    if (data.Status)
        //Do something
}, "json");

Проблема в том, что, когда я не аутентифицирован, меня не перенаправляют на страницу входа, потому что это не полная отправка формы. Вопрос: как программно узнать, что я не прошел проверку подлинности и должен перенаправить на страницу входа?

Ответы [ 4 ]

1 голос
/ 18 июня 2009

Я предполагаю, что ваш NiceController/Create/ перенаправляет на страницу входа, и это то, что вы видите. Вместо хорошего статуса вы возвращаете кучу HTML со страницы входа.

У вас есть 2 варианта: удалить атрибут Authorize из действия Создать и обработать его внутри, например, возвращая сообщение об ошибке JSON.

Или: сначала проверьте, вошли ли вы в систему, а затем вызывайте действие Создать, только когда пользователь вошел в систему

1 голос
/ 18 июня 2009

Я не знаю, есть ли более официальный ответ, но вы можете $.get('NiceController/AmILoggedIn') сначала? Затем, в зависимости от ответа, $.post или сделать какое-то перенаправление через страницу входа?

1 голос
/ 18 июня 2009

Если вы используете метод ajax, вы сможете добавить функцию обработки ошибок. Я считаю, что, поскольку вы запрашиваете JSON, parseerror должен быть возвращен, поскольку вы получите перенаправление, а не JSON. Вы также можете получить тот же эффект, используя глобальный обработчик ajaxError и продолжая использовать post.

0 голосов
/ 18 июня 2009

Вы можете сделать что-то вроде:

$.post("NiceController/Create/", { field1: data1, field2: data2 },
    function(data, textStatus) {
        if (data.Status)
            if(data.Status == 'authFailed') {
                window.location.href = '/login';
            }
        }
    }, "json");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...