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=OK、404=見つかりません、401=未承認、500=エラー
  • コントローラー アクションにブレークポイントを設定します。
  • アクションが呼び出されていることを確認します。
  • アクションのパラメーターが正しく入力されていることを確認してください。
  • コントローラーで例外がスローされていないことを確認してください。
  • ビューが「こんにちは」を返さないようにしてください;-)
于 2012-08-23T22:27:23.643 に答える