【问题标题】:ajaxSetup beforeSend only being called the first time button is clickedajaxSetup beforeSend 仅在第一次单击按钮时被调用
【发布时间】:2014-06-25 20:42:51
【问题描述】:

我正在使用 ASP.Net MVC 和 jQuery 1.8.2

我有一个带有按钮的表单,当它被点击时会调用这个 javascript:

$(function () {
    $('#SearchButton').click(function () {
        var data = $('#FilterDefinition :input').serialize() + "&PageNumber=1";
        $.post('@Url.Action("Search")', data, LoadContentCallback);
        $("#SearchResults").show();
    });
});

这会调用一个返回 PartialViewResult 的 MVC 控制器动作

在布局页面上,我有以下 JavaScript 代码:

//Add a custom header to all AJAX Requests
        $(document).ready(function () {                
            $.ajaxSetup({
                beforeSend: function(xhr) {
                    debugger;
                    if ($('[name=__RequestVerificationToken]').length) {
                        var token = $('[name=__RequestVerificationToken]').val();
                        xhr.setRequestHeader('__RequestVerificationToken', token);
                    }
                }
            });
        });

第一次点击按钮时,会正确调用 beforeSend 函数。但是,如果多次单击该按钮(例如,他们更改了搜索条件并再次搜索),则不会再次调用 beforeSend 函数并且验证防伪失败。

我尝试使用 ajaxSend 事件,但得到了相同的结果。

任何帮助解决这个问题将不胜感激。

谢谢!

【问题讨论】:

  • 你用的是什么浏览器?
  • 它发生在 Chrome、Firefox 和 IE 中。

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


【解决方案1】:

事实证明,问题在于正在呈现的局部视图引用了不同版本的 jQuery。我删除了这个引用,一切都开始正常工作了。

谢谢!

【讨论】:

    【解决方案2】:

    如果可能,我会避免使用 $.ajaxSetup。我只是在实际的 POST 请求中设置你的 beforeSend 。

    【讨论】:

    • 在整个应用程序中返回数百个 POST 调用以将其添加到每个调用中是不切实际的。
    猜你喜欢
    • 2021-02-14
    • 2015-05-26
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-21
    • 1970-01-01
    相关资源
    最近更新 更多