ajaxSetup beforeSend仅在第一次单击时被调用

时间:2014-06-24 17:41:03

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

我正在使用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();
    });
});

这将调用MVC Controller Action,它返回一个PartialViewResult

在布局页面上,我有以下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事件,我得到了相同的结果。

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

谢谢!

2 个答案:

答案 0 :(得分:1)

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

谢谢!

答案 1 :(得分:0)

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

相关问题