2014-06-24 40 views
0

我使用ASP.Net MVC和jQuery 1.8.2ajaxSetup beforeSend只被稱爲第一次按鈕被點擊

我有調用該JavaScript單擊時按鈕的一種形式:

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

這需要一個MVC控制器動作返回一個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

你使用什麼瀏覽器? – nick

+0

它發生在Chrome,Firefox和IE中。 – jkruer01

回答

0

如果可能,我會避免使用$ .ajaxSetup。我只是在實際的POST請求中設置你的beforeSend。

+0

在整個應用程序中通過數百次POST調用回溯到每個應用程序中並不實際。 – jkruer01

1

事實證明,問題在於正在渲染的部分視圖引用了不同版本的jQuery。我刪除了這個引用,所有的東西都開始正常工作

謝謝!