bagaimana cara mengetahui apakah request ajax di asp.net mvc?

108

siapa saja, bagaimana saya bisa tahu jika permintaannya ajax? (Saya menggunakan jquery untuk ajax)

Omu
sumber
2
Anda juga bisa menggunakan Fiddler untuk mengawasi permintaan. Anda akan belajar banyak dengan melakukan ini.
CrazyDart

Jawaban:

70

Semua panggilan AJAX yang dibuat oleh jQuery akan memiliki header yang ditambahkan untuk menunjukkan bahwa itu adalah AJAX. Header yang akan diperiksa adalah X-Requested-With, dan nilainya akan menjadiXMLHttpRequest ketika itu adalah panggilan AJAX.

Perhatikan bahwa permintaan AJAX adalah GET atau POST normal, jadi kecuali Anda (atau pustaka AJAX Anda seperti jQuery) menambahkan header tambahan dalam permintaan tersebut, tidak ada cara untuk mengetahui dengan pasti apakah itu AJAX atau bukan.

RedFilter
sumber
3
@Omu: Request.Headers["X-Requested-With"]atau serupa. Periksa MSDN. Header selalu terkait dengan permintaan.
Robert Koritnik
179

Ada juga Request.IsAjaxRequestjika Anda menggunakan versi MVC yang lebih baru. Saya tidak memiliki versi 1 lagi jadi saya tidak dapat mengatakan apakah itu dalam versi 1.

Jika Anda memerlukan pemeriksaan ini di Global.asax.cs coba ini: new HttpRequestWrapper(Request).IsAjaxRequest()

Buildstarted
sumber
1
@BuildStarted Saya perlu pemeriksaan ini di Global.asax.cs jadi ini tidak akan membantu saya
Omu
2
@BuildStarted tidak tersedia di Application_Error
Omu
1
Ya kamu benar. Itu karena itu di luar MVC dan tidak digunakan HttpRequestBase. Saya tidak membutuhkannya jadi saya tidak melihat terlalu dalam. Terimakasih atas peringatannya.
Dibangun mulai
20
baru HttpRequestWrapper (Request) .IsAjaxRequest ();
1
BTW: Jika Anda berada di dalam filter otorisasi kustom, gunakan ini untuk mendapatkan metode IsAjaxRequest pada Request: filterContext.HttpContext.Request.IsAjaxRequest
user1068352
51

Ini bekerja untuk saya di ASP.NET MVC 3

if (Request.IsAjaxRequest())
{
     // ajax request handled
}
Piotr Czyż
sumber
1
Ini tidak tersedia di Application_Error
ajbeaven
1
Ini tidak tersedia di Application_BeginRequest
Varadha31590
Dalam Global.asax:new HttpRequestWrapper(Request).IsAjaxRequest()
Morgs