jsonresult不回来?

时间:2011-02-09 11:43:07

标签: c# asp.net-mvc jquery

尝试从控制器显示成功消息?

  [HttpPost]
    public JsonResult SuccesMsg()
    {
        return Json(new { Success = true });
    }

jquery的:

        $("#but").click(function () {
            $.ajax({
                url: "/Home/SuccesMsg",
                type: 'POST',
                data: "",
                success: function (result) {
                    if (resultJson['Success'] == true) {
                        alert('success');
                    }

                    else
                    { alert('no'); }
                },
                error: function (err) { alert('error') }
            });
        });

4 个答案:

答案 0 :(得分:3)

dataType:“json”添加到$ .ajax调用中或使用简写: $。getJSON

同时检查您的控制器是否以状态http 200(OK)处理响应返回。

对于调试,您可以添加完成:function(){alert('complete');} 以查看请求是否完成。 Firefox的优秀调试工具(附加组件)是Live http标头和Firebug。

答案 1 :(得分:2)

我认为您需要在jquery.ajax中指定如下:

dataType:'json'

 $("#but").click(function () {
            $.ajax({
                url: "/Home/SuccesMsg",
                dataType: 'json', // change code
                type: 'POST',
                data: "",
                success: function (result) {
                    if (result['Success'] == true) {
                        alert('success');
                    }

                    else
                    { alert('no'); }
                },
                error: function (err) { alert('error') }
            });
        });

答案 2 :(得分:1)

刚试过这个,它应该可行。你想要

if (result.Success) {....}

而不是

if (resultJson['Success'] == true) {..}

所以整个例子

[HttpPost]
    public JsonResult SuccesMsg()
    {
        return Json(
            new
            {
                Success = true
            }
        );
    } 

$.ajax({
    url: '/Home/SuccesMsg',
    type: 'POST',
    success: function (result) {
        if (result.Success) {
            alert('success');
        } else {
            alert('no');
        }
    },
    error: function () {
        alert('error');
    }
});

您还应该指定dataType但不是必需的: http://docs.jquery.com/Specifying_the_Data_Type_for_AJAX_Requests

答案 3 :(得分:0)

在MVC2中使用JsonRequestBehavior.DenyGet说过here

  [HttpPost]
    public JsonResult SuccesMsg()
    {
        return Json(new { Success = true }, JsonRequestBehavior.DenyGet);
    }