我正在使用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事件,我得到了相同的结果。
任何帮助解决这个问题都将不胜感激。
谢谢!
答案 0 :(得分:1)
事实证明,问题是正在呈现的局部视图引用了不同版本的jQuery。我删除了这个引用,一切都开始正常工作。
谢谢!
答案 1 :(得分:0)
如果可能,我会避免使用$ .ajaxSetup。我只是在实际的POST请求中设置你的beforeSend。