如何使用MVC4处理Ajax响应

时间:2013-03-25 11:55:09

标签: jquery asp.net-mvc asp.net-mvc-4

我正在使用jquery mobile以增加乐趣。 我想要做的只是做一个帖子并保持在同一页面,但是我被重定向到登录页面,弹出工作但我最终登录页面。

  function UpdateClient(data) {
                var baseUrl = '@Url.Action("MobileAppointmentEdit")';
                $.ajax({
                    url: baseUrl,
                    type: 'POST',
                    data: {Id:'@Model.Id' },
                    success: function(response) {
                       $("#popupSaved").popup();
                        return false;
                    }
                });
            }

[HttpPost]
        public ActionResult MobileAppointmentEdit(MobileAppointment appointment)
        {
            if (appointment !=null)
            {

//Do stuff

            }

            return null;
        }

2 个答案:

答案 0 :(得分:1)

这样的东西
function UpdateClient(data) {
                var baseUrl = '@Url.Action("MobileAppointmentEdit")';
                $.ajax({
                    url: baseUrl,
                    type: 'POST',
                    dataType:'json'
                    data: {Id:'@Model.Id' },
                    success: function(response) {
                     if(response.Success)
                     {  
                       $("#popupSaved").popup();
                     }
                   else{
                       $("#popupNotSaved").popup();}

                    }
            });
        }

在服务器端,您应该返回JsonResult,如

[HttpPost]
        public ActionResult MobileAppointmentEdit(MobileAppointment appointment)
        {
            if (appointment !=null)
            {

             //Do stuff     
             return Json(new {Success = true});

            }

            return Json(new{Success = false});
        }

值得注意的是,如果失败,您可以在json对象中发送其他字段,例如错误消息。

答案 1 :(得分:1)

您似乎从成功的AJAX回调中返回false,但这没有任何意义。看起来您正在从某种形式的提交按钮调用此UpdateClient函数。确保从此函数返回false以取消默认操作。例如:

<input type="submit" value="Save" onclick="return UpdateClient();" />

然后从函数本身返回false:

function UpdateClient(data) {
    var baseUrl = '@Url.Action("MobileAppointmentEdit")';
    $.ajax({
        url: baseUrl,
        type: 'POST',
        data: { id: '@Model.Id' },
        success: function(response) {
            $("#popupSaved").popup();
        }
    });

    return false; // <!-- here, that's the important bit
}