代码之家  ›  专栏  ›  技术社区  ›  Tony Borf

$发布到错误页

  •  1
  • Tony Borf  · 技术社区  · 16 年前

    我在我的代码中这样做了一个Ajax帖子,

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

    如果我的响应是来自我的控制器的错误消息,我希望不在警报框中显示它,而是在常规浏览器页面中显示它。我该怎么做?

    谢谢。

    5 回复  |  直到 16 年前
        1
  •  4
  •   karim79    16 年前

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

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

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

    $('body').html(response);
    
        2
  •  4
  •   Willy Barro    16 年前

    最好使用$.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';
        }
    });
    
        3
  •  1
  •   Cyril Gupta    16 年前

    如果要按原样显示返回值,可能会使用户感到困惑,因为他们希望事情比一个简单的“错误”更加彻底。

    我认为karim79有一个合适的方法,但是它太复杂了,因为您需要设计一个完整的新页面来处理错误。

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

    看起来像这样

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

    您可以尝试将回调附加到 ajaxError-event handler :

    $.ajaxError(
      function (event, XMLHttpRequest, ajaxOptions, thrownError) {
        window.location = '/error.html'
    });
    
        5
  •  0
  •   Rishav Rastogi    16 年前

    除了上面给出的建议,您还可以使用jquery表单插件,它将处理您的Ajax表单需要的所有内容。

    网址: http://malsup.com/jquery/form/