2010-10-05 33 views

Trả lời

64

Tất cả các cuộc gọi AJAX được thực hiện bởi jQuery sẽ có một tiêu đề được thêm vào để cho biết đó là AJAX. Tiêu đề cần kiểm tra là X-Requested-With và giá trị sẽ là XMLHttpRequest khi đó là cuộc gọi AJAX. Lưu ý rằng yêu cầu AJAX là GET hoặc POST bình thường, vì vậy trừ khi bạn (hoặc thư viện AJAX của bạn như jQuery) thêm một tiêu đề bổ sung trong yêu cầu, không có cách nào để biết chắc chắn cho dù đó là AJAX hay không.

+2

ok, vậy làm cách nào để kiểm tra tiêu đề này trong asp.net? – Omu

+2

@Omu: 'Request.Headers [" X-Requested-With "]' hoặc tương tự. Kiểm tra MSDN. Tiêu đề là ** luôn ** liên quan đến các yêu cầu. –

156

Ngoài ra còn có Request.IsAjaxRequest nếu bạn đang sử dụng phiên bản mới hơn của MVC. Tôi không có phiên bản 1 nữa vì vậy tôi không thể nói nếu đó là trong phiên bản 1.

Nếu bạn cần kiểm tra này trong Global.asax.cs thử điều này: new HttpRequestWrapper(Request).IsAjaxRequest()

+1

@BuildStarted Tôi cần kiểm tra này trong Global.asax.cs để điều này sẽ không giúp tôi – Omu

+0

@Omu: Phụ thuộc vào sự kiện của global.asax.cs. Thuộc tính bool này thực hiện cùng một nội dung mà RedFiler đề xuất. Và hãy nhớ rằng các tiêu đề là ** luôn liên quan đến các yêu cầu **. –

+0

'IsAjaxRequest' là một phần mở rộng của' HttpRequestBase' do đó nó sẽ có sẵn ở khắp mọi nơi mà 'Request' có sẵn. – Buildstarted

48

Nó làm việc cho tôi trong ASP .NET MVC 3

if (Request.IsAjaxRequest()) 
{ 
    // ajax request handled 
} 
+1

Đây không phải là có sẵn trong Application_Error – ajbeaven

+1

Đây không phải là có sẵn trong Application_BeginRequest – Varadha31590

+0

Trong Global.asax : 'new HttpRequestWrapper (Yêu cầu) .IsAjaxRequest()' – Morgs

Các vấn đề liên quan