我想要的是将txtComments的值从View(使用jquery / ajax)传递给Controller。
问题是ajax / jquery不接受脚本标签作为字符串。意思是,当我在txtComments中输入任何脚本/ html标记时,ajax会进入错误功能,而无法进入控制器。
这是jQuery:
$('#btnSaveComments').click(function () { var comments = $('#txtComments').val(); var selectedId = $('#hdnSelectedId').val(); $.ajax({ url: '<%: Url.Action("SaveComments")%>?id=' + selectedId + '&comments=' + escape(comments), type: "post", cache: false, success: function (savingStatus) { $("#hdnOrigComments").val($('#txtComments').val()); $('#lblCommentsNotification').text(savingStatus); }, error: function (xhr, ajaxOptions, thrownError) { $('#lblCommentsNotification').text("Error encountered while saving the comments."); } }); });
这是控制器:
[HttpPost] public ActionResult SaveComments(int id, string comments){ var actions = new Actions(User.Identity.Name); var status = actions.SaveComments(id, comments); return Content(status); }
我也试过$('#txtComments').serialize()了逃脱(注释),但是还是一样。
$('#txtComments').serialize()
尝试使用data该$.ajax功能的选项。更多信息在这里。
data
$.ajax
$('#btnSaveComments').click(function () { var comments = $('#txtComments').val(); var selectedId = $('#hdnSelectedId').val(); $.ajax({ url: '<%: Url.Action("SaveComments")%>', data: { 'id' : selectedId, 'comments' : comments }, type: "post", cache: false, success: function (savingStatus) { $("#hdnOrigComments").val($('#txtComments').val()); $('#lblCommentsNotification').text(savingStatus); }, error: function (xhr, ajaxOptions, thrownError) { $('#lblCommentsNotification').text("Error encountered while saving the comments."); } }); });