当对控制器进行POST时,控制器会响应我希望浏览器呈现的内容。但浏览器不会呈现响应。我已经证实Fiddler的反应很好。
下面的代码显示了我认为的相关代码。返回响应的控制器操作方法,具有mvc帮助程序代码的模板的一部分,使用表单输入触发ajax调用的javascript / jquery代码。
我想使用FormCollection。为什么浏览器没有呈现响应,我该怎么做才能修复它?
BoMController
public ActionResult GetBillOfMaterialsView(FormCollection frmColl){
// snipped out model interaction
return PartialView("~/Views/Project/Index.cshtml", project);
}
Index.cshtml
@using (Html.BeginForm("GetBillOfMaterialsView", "BoM", FormMethod.Post, new {id = "frmGetBom"})) {
// selProj input select code removed for brevity
}
function submitGetBoM() {
var frmGetBom = $('#frmGetBom');
$.ajax({
type: 'POST',
url: frmGetBom.attr('action'),
data: frmGetBom.serialize()
});
}
$(document).ready(function() {
$('#selProj').selectmenu( {
select: function(){submitGetBoM()}
}).addClass("overflow");
});
答案 0 :(得分:2)
单独调用$.ajax
并不会将服务器的响应附加到文档中,您必须使用success
回调来手动获取响应并附加它。
例如:
$.ajax({
type: 'POST',
url: frmGetBom.attr('action'),
data: frmGetBom.serialize(),
success: function(response) {
$('#someContainerId').html(response);
}
});
或者,使用load()
,它是上述的简写:
$('#someContainerId').load(frmGetBom.attr('action'), frmGetBom.serializeArray());
答案 1 :(得分:0)
您的客户端代码不对服务器返回的值执行任何操作:
function submitGetBoM() {
var frmGetBom = $('#frmGetBom');
$.ajax({
type: 'POST',
url: frmGetBom.attr('action'),
data: frmGetBom.serialize(),
success: function() { alert('ok'); }
});
}
这会弹出成功警报。