จะรู้ได้อย่างไรว่าคำขอเป็น ajax ใน asp.net mvc?


108

ใครจะรู้ได้อย่างไรว่าคำขอเป็น ajax? (ฉันใช้ jquery สำหรับ ajax)


2
คุณยังสามารถใช้ Fiddler เพื่อดูคำขอ คุณจะได้เรียนรู้มากมายจากการทำสิ่งนี้
CrazyDart

คำตอบ:


70

การโทร AJAX ทั้งหมดที่ทำโดย jQuery จะมีการเพิ่มส่วนหัวเพื่อระบุว่าเป็น AJAX ส่วนหัวที่จะตรวจสอบคือX-Requested-Withและค่าจะเป็นXMLHttpRequestเมื่อเป็นการเรียก AJAX

โปรดทราบว่าคำขอ AJAX เป็น GET หรือ POST ปกติดังนั้นเว้นแต่คุณ (หรือไลบรารี AJAX ของคุณเช่น jQuery) จะเพิ่มส่วนหัวเพิ่มเติมในคำขอจะไม่มีทางทราบได้อย่างแน่นอนว่าเป็น AJAX หรือไม่


3
@Omu: Request.Headers["X-Requested-With"]หรือคล้ายกัน ตรวจสอบ MSDN ส่วนหัวมักจะเกี่ยวข้องกับการร้องขอ
Robert Koritnik

179

นอกจากนี้ยังมีRequest.IsAjaxRequestถ้าคุณใช้ MVC เวอร์ชันที่ใหม่กว่า ฉันไม่มีเวอร์ชัน 1 อีกต่อไปดังนั้นฉันจึงไม่สามารถบอกได้ว่าเป็นเวอร์ชัน 1 หรือไม่

หากคุณต้องการเช็คนี้ใน Global.asax.cs ให้ลองทำดังนี้: new HttpRequestWrapper(Request).IsAjaxRequest()


1
@BuildStarted ฉันต้องการเช็คนี้ใน Global.asax.cs ดังนั้นสิ่งนี้จะไม่ช่วยฉัน
Omu

2
@BuildStarted ไม่มีใน Application_Error
Omu

1
ใช่คุณถูก. ก็เพราะมันเป็นด้านนอกของ MVC HttpRequestBaseและไม่ได้ใช้ ฉันไม่ต้องการสิ่งนั้นดังนั้นฉันจึงไม่ได้มองลึกเกินไป ขอบคุณสำหรับหัวขึ้น.
เริ่มสร้าง

20
ใหม่ HttpRequestWrapper (คำขอ) .IsAjaxRequest ();

1
BTW: หากคุณอยู่ในตัวกรองการอนุญาตที่กำหนดเองให้ใช้สิ่งนี้เพื่อรับเมธอด IsAjaxRequest ตามคำขอ: filterContext.HttpContext.Request.IsAjaxRequest
user1068352

51

มันใช้ได้กับฉันใน ASP.NET MVC 3

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

1
สิ่งนี้ไม่มีใน Application_Error
ajbeaven

1
สิ่งนี้ไม่มีใน Application_BeginRequest
Varadha31590

ใน Global.asax:new HttpRequestWrapper(Request).IsAjaxRequest()
Morgs
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.