使用MVC5,我正在尝试使用$ .ajax,因为我需要替换网页上的部分视图。使用@ Ajax.ActionLink工作,除了我无法弄清楚如何在Razor内部检索输入字段值,因为@ Ajax.ActionLink替换了表单发布按钮。在JavaScript中,我可以获取输入字段值,但$ .ajax方法似乎不允许像@Ajax调用那样允许“InsertionMode = InsertionMode.Replace”。
我的JavaScript看起来像这样:
$("#Filter_Form").submit(function (event) {
$.ajax({
type: "POST",
url: "UpdateData",
data: { "filter": GetParamsToSend() },
dataType: "text",
//InsertionMode: InsertionMode.Replace, Doesn't work in the jQuery $.ajax
UpdateTargetId: "PersonListDiv"
});
});
var GetParamsToSend = function() {
var f1 = $('input[name=SearchType]:checked').val();
var f2 = "~";
var f3 = $("#FilterEntry").val();
var filter = f1.concat(f2.concat(f3));
return filter;
};
这使用正确的参数调用正确的控制器方法,但我不知道如何使它替换我正在处理的部分视图,应该在“PersonListDiv”位置替换。
对此的任何帮助将不胜感激。
答案 0 :(得分:0)
UpdateTargetId
中没有名为$.ajax
的选项。
相反,您应该实现成功处理程序。
success: function(response){
//do something with the response
}
答案 1 :(得分:0)
试试这个:
$("#Filter_Form").submit(function (event) {
$.ajax({
type: "POST",
url: "UpdateData",
data: { "filter": GetParamsToSend() },
dataType: "text",
success: function (result) {
$("#myPopUp").html(result);
$("#myPopUp").popup("open");
},
});
});
您只使用@Ajax.BeginForm()
中的UpdateTargetId而不是JS代码
答案 2 :(得分:0)
尝试replaceWith(result)而不是html(result)
$("#Filter_Form").submit(function (event) {
$.ajax({
type: "POST",
url: "UpdateData",
data: { "filter": GetParamsToSend() },
dataType: "text",
success: function (result) {
$("#myPopUp").replaceWith(result);
$("#myPopUp").popup("open");
},
});
});