JQuery不会返回任何状态,如Success,Failed,Completed

时间:2011-07-08 11:09:38

标签: asp.net-mvc-3 jquery

专家,

以下函数成功将数据发送到Controller.cs(服务器)

 var ajaxResponse = $.ajax({
                        type: "post",
                        url: href,
                        dataType: 'json',
                        contentType: "application/json; charset=utf-8",
                        data: JSON.stringify(postData),
                        success: function (msg) {
                           alert("Success");
                        }
                    })

但我无法通过以下方法获得更新状态

[AcceptVerbs(HttpVerbs.Post)]
        public ActionResult SaveData(TabMasterViewModel postData)
        {
            string message = "";
            try
            {
                TabMasterViewModel update = new TabMasterViewModel();
                update = _tabmasterService.GetSingle(r => r.colID == postData.colID);
                UpdateModel(update);
                _tabmasterService.Update(update);
                message = "Success";
            }
            catch (Exception e)
            {
                message = e.Message;
            }
            return Content(message);
        }

我想在失败或成功时显示消息。 以下行永不执行

success: function (msg) {
                           alert("Success");
                        }

但我的服务器端代码执行没有任何错误。

请提供宝贵的建议,

谢谢,
Imdadhusen

4 个答案:

答案 0 :(得分:4)

您应该返回ActionResult

,而不是返回JsonResult

例如

public JsonResult SaveData() {
  return Json(new {success=true, msg="Saved ok"});
}

然后你的JS

success: function (msg) {
                            if(msg.success)
                               alert("Success");
                        }

答案 1 :(得分:1)

您正在返回Content结果,就像您在JQuery中提到的dataType: 'json'一样。我建议你从控制器返回JSON结果或从jquery调用中删除dataType。 我不确定,请试一试。

答案 2 :(得分:1)

在ajax脚本的发送行上点击Firebug中的断点。

在成功方法回调中点击Firebug中的断点。

在第一行动作方法中点击Visual Studio中的断点。

按照步骤重现场景,并在发送请求之前检查Firebug中的对象,继续并点击F8发送请求,检查firebug中的Net标签页,看看是否有请求是否已发送。

如果已发送,请检查已发布的请求。

如果到目前为止一切正常,请继续VS上服务器端的过程并检查一切是否正确。

然后检查Firebug上的响应,看看是否有任何问题。

答案 3 :(得分:0)

首先显而易见的事情是:你确定你的网址是有效的吗? (我想是的,因为你声明数据发送成功了。)

您是否尝试过监控ajax请求以查看您收到的http状态? 无论如何,.ajax还有一个错误回调,你可以在请求失败的情况下使用它。

适当的:你从函数返回的地方去了哪里? 您必须将回复发送到输出缓冲区才能到达客户端。简单地返回将向客户端发送空响应(但在这种情况下应该无关紧要,因为.ajax成功回调应该在请求readyState 4 + status 200时触发。)