2012-08-23 64 views
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值看起來不錯!我很確定問題出在Controller上,而不是JavaScript。

回答

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); 
+0

您可以絕對返回一個視圖。我一直這麼做。 –

+0

相同的結果...只是跳過這行代碼就好像$ .get不成功 – Zenacity

+0

對不起...這行代碼... $('#MessageContent')。replaceWith(data); //應該用值替換嗨 – Zenacity

0

有沒有在您的文章足夠的信息來提出令人信服的答案,但請嘗試以下操作:

  • 確保沒有JavaScript錯誤(例如,在IE9中,使用F12工具的腳本標籤)
  • 看看HTTP流量(再次在IE9中,您可以使用F12工具)。查看您返回的HTTP狀態。 200 = OK,404 =未找到,401 =未經授權,500 =錯誤
  • 在控制器操作中設置斷點。
  • 確保操作正在被調用。
  • 確保該操作的參數正確填充。
  • 確保在控制器中沒有拋出異常。
  • 確保視圖不返回「你好」 ;-)
+0

謝謝你,我已經驗證了上述所有內容。 – Zenacity