8
votes

Possible de faire appel AJAX qui ne revient pas?

est-il possible d'envoyer un appel JQuery.ajax ou un équivalent sans aucune réponse? Je veux déclencher quelque chose sur le serveur car je quitte la page avec la commande onbeforeRunload, mais ce n'est pas quelque chose dont j'ai besoin pour rétablir le client, alors je souhaite simplement envoyer la commande et ne pas attendre une réponse.

est-ce possible?


3 commentaires

Ignorez simplement les événements de changement d'état.


Ouais pourquoi pas. Il suffit de ne pas inclure aucun succès (bien que cela puisse inclure le gestionnaire défaillance pour savoir s'il est allé à droite ou non). Envoyez simplement les données requises et laissez le script côté serveur faire son devoir.


Le protocole normal pour l'HTTP sous-jacent est qu'une réponse est toujours renvoyée - vous pouvez ignorer la réponse, cependant.


4 Réponses :


14
votes

chaque demande a une réponse. Même si le serveur jette une erreur une réponse reçoive avec l'erreur.

Vous pouvez ignorer la réponse si vous souhaitez simplement ajouter un succès rappel. xxx


1 commentaires

Assurez-vous de quitter le Async Option out pour le laisser sous true Il s'agit donc d'une demande asynchrone et du navigateur n'attends pas une réponse.



1
votes

Si vous essayez de retourner une réponse dès que possible, je pense que c'est plus d'une décision d'architecture de serveur. Vous pouvez décharger le travail réel que la demande implique un courtier ou quelque chose afin de pouvoir revenir à l'utilisateur dès que possible? Je ne pense pas que l'envoi d'un message unique est réalisable


0 commentaires

1
votes

En supposant que vous utilisez quelque chose comme ceci: xxx

(emprunté à partir de http://api.jquery.com/jquery.ajax/ et édité) , vous pouvez jeter la réponse.


0 commentaires

2
votes

Vous pouvez utiliser l'API Navigator SendBeacon mentionné référencé dans Cette réponse de la pile Réponse ou directement liée à ici .

Dans la description sur le site, il envoie asynchroneusement certaines données et vérifie simplement s'il a été capable de faire la queue des données pour l'envoi ou non. Le gestionnaire de déchargement ne devrait pas ignorer la demande comme si elle pouvait faire avec d'autres XMLHTTTPQUESTS XMLHTTTPEQUES asynchrones.

NAVIGATOR.SENDBEAACCON (URL, données) - La méthode SendBeAcon () renvoie true si l'agent utilisateur est capable de faire la queue de la ligne de transfert réussie, sinon il renvoie false.

...

S'assurer que les données ont été envoyées lors du déchargement d'un document, c'est quelque chose qui a été traditionnellement difficile pour les développeurs, car les agents d'utilisateur ignorent généralement les XMLHTTPQUESTS asynchrones fabriqués dans un gestionnaire de déchargement.


0 commentaires