在InsertionMode.Replace中使用$ .ajax

时间:2014-04-19 06:47:48

标签: jquery ajax

使用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”位置替换。

对此的任何帮助将不胜感激。

3 个答案:

答案 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");
         },
   });
});