来自控制器的$ .get没有成功

时间:2012-08-23 22:19:28

标签: c# jquery asp.net-mvc razor

我有一个javascript如下

$('#MessageContent').replaceWith("Hi there"); //just sets value to Hi There

    $('body').delegate('#MessageDesc', 'change', function () {
        var sMessageTypeID = $("#MessageDesc").val();
        $.get('@Url.Action("GetMessageContent")', { MessageTypeID: sMessageTypeID }, function (data) {
            $('#MessageContent').replaceWith(data); //should replace hi there with a value
        });
    });

它应该将名为“MessageContent”的文本框中的内容替换为要返回的内容。

我的控制器操作看起来像这样

public ActionResult GetMessageContent(long MessageTypeID)
    {
        tblMessageType tblMessageType = db.tblMessageTypes.Single(t => t.MessageTypeID == MessageTypeID);
        return View(tblMessageType.MessageContent);
    }

我已经验证tblMessageType.MessageConent中的值看起来不错!我很确定问题出在Controller中,而不是JavaScript。

2 个答案:

答案 0 :(得分:0)

首先,请确保调用您的控制器操作,然后尝试返回简单的JsonResult

这样的事情:

public JsonResult GetMessageContent(long MessageTypeID)
{
    tblMessageType tblMessageType = db.tblMessageTypes.Single(t => t.MessageTypeID == MessageTypeID);

    return Json(tblMessageType.MessageContent, JsonRequestBehavior.AllowGet);
}

尝试替换此行:

$('#MessageContent').replaceWith(data);

这一个:

$('#MessageContent').text(data);

$('#MessageContent').val(data);

答案 1 :(得分:0)

您的帖子中没有足够的信息来提供确凿的答案,但请尝试以下方法:

  • 确保没有JavaScript错误(例如在IE9中,使用F12工具的“脚本”选项卡)
  • 查看HTTP流量(再次在IE9中,您可以使用F12工具)。查看您获得的HTTP状态。 200 =确定,404 =未找到,401 =未授权,500 =错误
  • 在控制器操作中设置断点。
  • 确保正在调用该操作。
  • 确保正确填充操作的参数。
  • 确保控制器中没有抛出任何异常。
  • 确保视图不会返回“Hi there”; - )