jQuery在$ .post后显示错误消息

时间:2011-04-14 05:45:37

标签: jquery asp.net-mvc

我有这个:

  • HTML:form + jquery
  • 控制器

我通过jQuery发布表单,在控制器中,我使用的函数中出现了错误,我将状态代码设置为500.我想在$ .post的“.error”中显示我的内容视图。如你所见,我测试了几个警报,但我从未看到视图的内容

HTML

@using (Html.BeginForm("Save","Customer"))
{   
}

var jqxhr = $.post("Customer/Save", function () {
    alert("success");
})
.success(function () {})
.error( function (jqXHR, status, error) {
    alert(jqXHR);
    alert(status),
    alert(error);
 })
.complete(function () {});

* 控制器*

public ActionResult Save(MyModel model)
{
    //Action1 here
    //....

    if(Actiion1 failed)
    {
        Response.StatusCode = 500
        return PartialView("Error");
    }       
    return View("MyView");
}

谢谢,

3 个答案:

答案 0 :(得分:2)

您想要查看responseText的{​​{1}}成员。

答案 1 :(得分:0)

   did you check if your async post request is coming into controller? If yes then instead of sending the partial view back, try to send some dummy string and check.

希望这有帮助。

阿比

答案 2 :(得分:0)

我用这种方式做到了。在页面上我已经包含了这段代码。

$(function () {
    $.ajaxSetup({
        error: function (request, err) {
            //            if (x.status == 0) {
            //                alert('you are offline!!\n Check you network.');
            //            } else 
            if (request.status == 404) {
                alert('page not found');
            } else if (request.status == 500) {
                $('body').html(request.responseText);
            } else if (err == 'parsererror') {
                alert('parse error');
            } else if (err == 'timeout') {
                alert('timeout');
            } else {
                alert('unhandled exception.\n' + x.responseText);
            }
        }
    });
  });

你可以看到我在error.status为500时将body html属性设置为结果文本。它会将错误页面内容设置为body