Διακοπή αιτημάτων Ajax με χρήση της jQuery

Χρησιμοποιώντας την jQuery, πώς μπορώ να ακυρώσω/ακυρώσω ένα αίτημα Ajax από το οποίο δεν έχω λάβει ακόμα απάντηση;

Λύση

Οι περισσότερες από τις μεθόδους Ajax της jQuery επιστρέφουν ένα αντικείμενο XMLHttpRequest (ή το αντίστοιχο), οπότε μπορείτε να χρησιμοποιήσετε απλώς την abort().

Ανατρέξτε στην τεκμηρίωση:

  • [abort Method][1] ([MSDN][2]). Ακυρώνει την τρέχουσα αίτηση HTTP.
  • [abort()][3] ([MDN][4]). Εάν η αίτηση έχει ήδη σταλεί, αυτή η μέθοδος θα διακόψει την αίτηση.
Σχόλια (15)

Δεν μπορείτε να ανακαλέσετε την αίτηση, αλλά μπορείτε να ορίσετε μια τιμή χρονικού ορίου μετά την οποία η απάντηση θα αγνοηθεί. Δείτε αυτή τη σελίδα για τις επιλογές του jquery AJAX. Πιστεύω ότι το callback σφάλματος που χρησιμοποιείτε θα κληθεί αν ξεπεραστεί η περίοδος timeout. Υπάρχει ήδη ένα προεπιλεγμένο χρονικό όριο για κάθε αίτηση AJAX.

Μπορείτε επίσης να χρησιμοποιήσετε τη μέθοδο abort() στο αντικείμενο αίτησης, αλλά, ενώ θα προκαλέσει τη διακοπή της ακρόασης του συμβάντος από τον πελάτη, μπορείπιθανώς δεν θα σταματήσει τον διακομιστή να το επεξεργάζεται.

Σχόλια (0)

Πρόκειται για ένα ασύγχρονο αίτημα, που σημαίνει ότι μόλις σταλεί είναι εκεί έξω.

Σε περίπτωση που ο διακομιστής σας ξεκινάει μια πολύ ακριβή λειτουργία λόγω του αιτήματος AJAX, το καλύτερο που μπορείτε να κάνετε είναι να ανοίξετε τον διακομιστή σας για να ακούει για αιτήματα ακύρωσης και να στείλετε ένα ξεχωριστό αίτημα AJAX που ειδοποιεί τον διακομιστή να σταματήσει ό,τι κάνει.

Διαφορετικά, απλώς αγνοήστε την απάντηση AJAX.

Σχόλια (8)