$ .post到错误页面

时间:2009-08-03 13:40:57

标签: jquery asp.net-mvc

我在我的代码中正在做一个ajax帖子,

$.post("myAction",$("#myForm").serialize(), 
        function(response) {alert(response);});

如果我的回复是来自我的控制器的错误消息,我想不是在警告框中显示它,而是在常规浏览器页面中显示。我怎么能这样做?

感谢。

5 个答案:

答案 0 :(得分:4)

您可以根据响应重定向到错误页面,例如:

$.post("myAction",$("#myForm").serialize(), 
        function(response) {
            alert(response);
            if(response == 'Error') {
                window.location.href = '/MyErrorPage.html';
            }

});

或者您可以使用响应替换当前页面的内容,例如:

$('body').html(response);

答案 1 :(得分:4)

最好使用$ .ajax方法,因为您可以更好地处理错误消息(例如,如果服务器返回404错误或类似的错误)。 你可以这样使用:

$.ajax({
    type: "POST",
    url: "page.php",
    dataType: "text",
    success: function(xhr) {
        if(xhr == 'error') {
            window.location.href = '/MyErrorPage.html';
        }
    },
    error: function(XMLHttpRequest, textStatus, errorThrown) {
        window.location.href = '/MyErrorPage.html';
    }
});

答案 2 :(得分:1)

如果您要显示返回值,可能会使用户感到困惑,因为他们会期望事情比简单的“错误”更加贬值。

我认为Karim79有一个正确的方法,但它太复杂了,因为你必须设计一个完整的新页面,只是为了处理错误。

我建议您在页面本身设置自己的错误处理功能,并根据响应显示人类可读的消息。

它可能看起来像这样

$.post("myAction",$("#myForm").serialize(), 
        function(response) {
            alert(response);
            if(response == 'Error') {
                $('#errorMsg").html("Could not get results from server. Please try again later.");
            }

});

答案 3 :(得分:0)

您可能会尝试将回调附加到ajaxError-event handler

$.ajaxError(
  function (event, XMLHttpRequest, ajaxOptions, thrownError) {
    window.location = '/error.html'
});

答案 4 :(得分:0)

除了上面给出的建议,你可以使用Jquery Form插件来处理你所有的ajax表单需求。

url:http://malsup.com/jquery/form/