làm thế nào để biết nếu yêu cầu là ajax trong asp.net mvc?


108

bất kỳ ai làm thế nào tôi có thể biết nếu yêu cầu là ajax? (Tôi đang sử dụng jquery cho ajax)


2
Bạn cũng có thể sử dụng Fiddler để xem các yêu cầu. Bạn sẽ học được rất nhiều điều khi làm điều này.
CrazyDart

Câu trả lời:


70

Tất cả các lệnh gọi AJAX do jQuery thực hiện sẽ có thêm tiêu đề để cho biết đó là AJAX. Tiêu đề cần kiểm tra là X-Requested-Withvà giá trị sẽ là XMLHttpRequestkhi nó là một cuộc gọi AJAX.

Lưu ý rằng các yêu cầu AJAX là GET hoặc POST thông thường, vì vậy trừ khi bạn (hoặc thư viện AJAX của bạn như jQuery) đang 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 đó có phải là AJAX hay không.


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

179

Ngoài ra còn có Request.IsAjaxRequestnếu bạn đang sử dụng phiên bản MVC mới hơn. Tôi không có phiên bản 1 nữa nên tôi không thể nói nó có ở phiên bản 1 hay không.

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


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

2
@BuildStarted không khả dụng trong Application_Error
Omu

1
Uh, đúng vậy. Đó là vì nó nằm ngoài MVC và không sử dụng HttpRequestBase. Tôi không có nhu cầu về điều đó nên tôi không nhìn quá sâu. Cảm ơn cho những người đứng đầu lên.
Bắt đầu vào

20
mới HttpRequestWrapper (Yêu cầu) .IsAjaxRequest ();

1
BTW: Nếu bạn là bộ lọc cho phép bên trong tùy chỉnh sử dụng này để có được phương pháp IsAjaxRequest trên Yêu cầu: filterContext.HttpContext.Request.IsAjaxRequest
user1068352

51

Nó hoạt động cho tôi trong ASP.NET MVC 3

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

1
Tính năng này không khả dụng trong Application_Error
ajbeaven 9/1/12

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

Trong Global.asax:new HttpRequestWrapper(Request).IsAjaxRequest()
Morgs
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.