0

我有一个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 中的值看起来不错!我很确定问题出在控制器上,而不是 JavaScript。

4

2 回答 2

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);
于 2012-08-23T22:24:38.347 回答
0

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

  • 确保没有 JavaScript 错误(例如在 IE9 中,使用 F12 工具的脚本选项卡)
  • 查看 HTTP 流量(同样在 IE9 中,您可以使用 F12 工具)。查看您返回的 HTTP 状态。200=正常,404=未找到,401=未授权,500=错误
  • 在控制器操作中设置断点。
  • 确保正在调用该操作。
  • 确保正确填充操作的参数。
  • 确保控制器中没有抛出异常。
  • 确保视图不会返回“您好”;-)
于 2012-08-23T22:27:23.643 回答