javascript - Ajax 调用仅进行一次 ASP.Net MVC5

标签 javascript jquery asp.net ajax asp.net-mvc

我正在 ASP.Net MVC5 中编写 AJAX 函数,但遇到一个问题:表单 AJAX 请求仅进行一次。这是一个搜索页面。选择过滤器后,我按搜索,得到正确的结果。但是,如果我更改过滤器并再次单击搜索提交,则不会发生任何情况。

var ajaxFormSubmit = function() {
    var $form = $(this);
    var options = {
        url: $form.attr("action"),
        type: $form.attr("method"),
        data: $form.serialize()
    };

    $.ajax(options).done(function (data) {
        var target = $($form.attr("data-enbw-target"));
        target.replaceWith(data);
        debugger;
    });

    return false;
};
$("form[data-enbw-ajax='true']").submit(ajaxFormSubmit);
<form method="get" id="documentForm" action="@Url.Action("Index", "DocumentSearch")" def data-enbw-ajax="true" data-enbw-target="#documentSearchResult">
    <button type="submit" id="submitbtn" name="submitbtn" tabindex="100" class="k-button">
        <img src="~/Content/search_small_icon.png" /> 
        @WebResources.DocumentSearchButton
    </button>
</form>
@Html.Partial("Results", @Model)
public ActionResult Index(DocumentSearchInput model)
{
    if (Request.IsAjaxRequest())
    {
        return PartialView("Results", result);
    }

    return View(result);
}

我没有收到任何错误。当我得到一个调试器时;在 JavaScript 中。新数据是正确的。你能帮我一下吗?

最佳答案

您正在替换 Ajax 成功中的表单。因此,新表单将不会具有提交绑定(bind)。如果您确实想这样做,则必须重新绑定(bind)到新表单,或者可能使用委托(delegate)。

$('parentSelector').on('event', 'childSelector', function(){});

parentSelector - 子元素的父元素,先于子元素存在,通常不应在页面生命周期内删除/创建。

childSelector - 将在页面生命周期中的某个时刻创建/更改/删除的元素的选择器。

关于javascript - Ajax 调用仅进行一次 ASP.Net MVC5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40999511/

相关文章:

javascript - jQuery - 当单击另一个链接时触发单击 div 内的另一个链接

javascript - Jquery find 方法挂起我的整个浏览器

javascript - 在 jQuery 中使用 grep 编写通用过滤器

javascript - 如何使用 Capybara 和 Select2 v3.5.4 进行选择和元素

php - 使用javascript分配一个php变量

javascript - 为什么 jquery ui draggable 在这个例子中很慢

c# - 将 varbinary 转换回 .txt 文件

c# - Asp MVC Paypal 交易

c# - 如何将 cs 文件添加并绑定(bind)到没有 ASCX/ASPX 页面的页面?

javascript - 使用 Django View 的 Ajax 请求 - 错误地捕获变量