【发布时间】:2018-04-26 09:20:16
【问题描述】:
我正在尝试在 Ajax HttpPost 之后更新部分视图。
这是局部视图的控制器:
public PartialViewResult BrtMagazzino(DataMagazzino m)
{
if (Session["Data"] != null)
{
DateToView dt = (DateToView)Session["Data"];
ViewBag.comm = dt.commSelected.COMMITTENTE;
ViewBag.corriere = "Bartolini";
}
return PartialView(m);
}
这是包含部分视图的代码:
<div id="view-Bartolini">
@{
Html.RenderAction("BartoliniMagazzino", "Partial", new { m = item });
}
</div>
这是按钮的代码:
<input class='btn btn-info btnBordero' type='button' value='Salva Borderò' data-corriere="@ViewBag.corriere" data-magazzino="@Model.NomeMagazzino" data-committente="@ViewBag.comm" />
这是点击此按钮的代码:
$(function () {
$('.btnBordero').on('click', function (event) {
event.preventDefault();
_self = $(this);
var uf = new FormData();
uf.append('corriere', _self.data('corriere'));
uf.append('magazzino', _self.data('magazzino'));
uf.append('committente', _self.data('committente'));
var url = "/Partial/SaveBordero";
$.ajax({
type: "POST",
url: url,
contentType: false,
processData: false,
data: uf,
error: function (ts) { alert(ts.responseText)
},
success: function (result) {
$("#view-Bartolini").html(result);
}
});
});
});
SaveBordero 函数有这样的代码:
[HttpPost]
public ActionResult SaveBordero(FormCollection form)
{
DataMagazzino dt = new DataMagazzino();
// Do something
return PartialView("BartoliniMagazzino", new { m = dt });
}
一切正常,但是当我在 SaveBordero 函数中调用 return PartialView 时,ajax 调用总是进入错误部分。我不知道如何成功并更新部分视图
【问题讨论】:
-
在您的 Ajax 调用中删除
dataType: 'json',。这代表您从服务器获得的内容,它不是 json 而是 html。 -
您是否在服务器端代码中设置了断点?似乎在后端抛出了一个错误
-
按照@derloopkat 的建议删除数据类型属性。 jquery 将使用响应标头猜测 dataType 并处理它。
-
我尝试输入
dataType:'html'或删除 dataType 但它不会改变结果 -
这意味着您还有其他问题导致代码出错。您从网络呼叫中得到什么响应? 200可以吗?
标签: jquery ajax asp.net-mvc asp.net-mvc-4