Sto cercando un'alternativa a window.stop() per IE. Ho provato document.execCommand ('Stop'), ma non sembra funzionare. Sto cercando di cancellare un XMLHttpRequest che viene chiamato da un controllo utente ASP che sto usando. Non riesco a utilizzare .abort() di jQuery poiché non imposto la richiesta da solo.IE alternativa a window.stop() (annulla tutte le richieste in sospeso)
risposta
Presumo che il controllo sulla pagina utilizza jQuery.ajax e si sa quando è necessario interrompere la richiesta, secondo i propri criteri.
Che ne dici di qualcosa di simile?
(function ($) {
var xhr = null,
originalAjax = $.ajax,
updatedAjax = function (url, options) {
xhr = originalAjax(url, options);
};
$.ajax = updatedAjax;
})(jQuery);
Ora si ha una variabile denominata xhr che contiene l'oggetto xmlhttp sottostante. Puoi chiamare abort() sull'oggetto quando è necessario.
Il limite è che variabile sarà popolato per ogni richiesta Ajax fatto da jQuery, e vorrei includere solo questo script su quella determinata pagina, forse anche reimpostare l'Ajax quando si è fatto.
Non ho provato questo, solo un'idea, come sto prendendo in giro chiamate ajax tutto il tempo. Alcuni potrebbero pensare che questo approccio sia un po 'drastico!
Spero che tu trovi utile.
Capisco che non si imposta la richiesta da soli, ma si ha alcun tipo di accesso ad esso, in modo che è possibile utilizzare l'evento onreadystatechanged in javascript? In tal caso, è possibile determinare se è necessario annullare l'evento.
Non riesco a modificare il codice js del controllo utente asp. Se c'è un modo per catturare la creazione o l'attivazione di tale richiesta e quindi allegare qualche tipo di evento, sarebbe grandioso. –
Se si ha accesso all'oggetto, è possibile farlo con il gestore di eventi abort() e onreadystatechange. Ecco un esempio di lavoro ho ottimizzato da w3schools
<html>
<head>
<script type="text/javascript">
function loadXMLDoc()
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==2){ xmlhttp.abort();}
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","xmlhttp_info.txt",true);
xmlhttp.send();
}
</script>
</head>
<body>
<h2>Using the XMLHttpRequest object</h2>
<div id="myDiv"></div>
<button type="button" onclick="loadXMLDoc()">Change Content</button>
</body>
</html>
Come si può vedere, il testo richiesta non viene caricata perché viene interrotta.
- 1. Retrofit 2/OkHttp: Annulla tutte le richieste in esecuzione
- 2. Annulla tutte le richieste di aggiornamento in una sola volta?
- 3. Come catturare tutte le richieste fatte dalla pagina nel webdriver? C'è qualche alternativa a Browsermob?
- 4. AngularJS intercetta tutte le richieste $ $
- 5. CORS in grails - Tutte le richieste falliscono?
- 6. SqlConnection.Dispose() esegue un rollback su tutte le transazioni in sospeso?
- 7. Come eseguire l'equivalente TFS di "Annulla modifiche in sospeso"
- 8. IE frameBorder alternativa
- 9. Richieste Ajax bloccate e in sospeso da JQuery in Chrome
- 10. Annulla tutte le chiamate di servizio Web da Alamofire
- 11. Forza tutte le richieste ricevute Content-Type a JSON
- 12. htaccess: reindirizza tutte le richieste a domini diversi
- 13. Nginx: reindirizza tutte le richieste inesistenti a index.php
- 14. Richiede l'autenticazione per tutte le richieste a un'applicazione OWIN
- 15. fermare iOS Alamofire tutte le richieste
- 16. Filtro servlet per tutte le richieste
- 17. Annulla l'impostazione di tutte le variabili nello script PHP
- 18. Entity Framework - Start Over - Annulla/Ripristina tutte le migrazioni
- 19. s3 senza interruzioni di richieste audio in sospeso
- 20. jQuery .load() problema in tutte le versioni di IE
- 21. Problema Implementazione di Colorbox correttamente in IE (tutte le versioni)
- 22. jPanelMenu non funziona correttamente in IE (tutte le versioni)
- 23. Come mostrare tutte le stringhe di traduzione richieste in Rails?
- 24. ASP.NET MVC 4 intercetta tutte le richieste in entrata
- 25. Random "SELECT 1" query in tutte le richieste su rotaie
- 26. Javascript: Annulla/interrompi richieste di immagini
- 27. Polling lungo in node.js - come "sospendere" le richieste in sospeso se non sono disponibili dati?
- 28. Tutte le richieste all'API Web ASP.NET restituiscono l'errore 404
- 29. Annulla richieste riunioni Outlook tramite MailMessage in C#
- 30. Annulla richieste AJAX in volo utilizzando Jquery .ajax?
Mi piace il tuo approccio. È esattamente quello che voglio fare. Comunque non sono bravo con jQuery, quindi ho dei problemi. Non sono sicuro che il tuo codice di esempio debba essere eseguito solo una volta e dopo che la variabile xhr debba essere compilata automaticamente per ogni richiesta, o dovrei eseguire il codice ogni volta che voglio caputre una richiesta. Se lo eseguo una volta (inserendo semplicemente il codice nel blocco di script) ho sempre la stessa richiesta con STATUS OK all'interno di xhr. Se inserisco il tuo codice nella funzione in cui desidero annullare le richieste correnti, xhr rimane nullo. Apprezzerei molto il tuo aiuto. Grazie mille :) –
Questo codice dovrebbe essere eseguito una sola volta nel caricamento della pagina, prima di qualsiasi richiesta Ajax. È inoltre necessario fare attenzione all'ambito dell'ambito, si desidera che la variabile su un ambito globale, in modo da poter eliminare l'ambito jQuery e metterlo nell'evento pronto. Di nuovo, per ogni richiesta, quella variabile verrà caricata, e sarà sostituita, quindi è necessario prenderla prima che lo faccia. Spero che tu possa farlo funzionare, sei il benvenuto! Non dimenticare di contrassegnare la mia risposta, se lo fa;) –
Ho bisogno di interrompere la richiesta solo se l'utente lo desidera, quindi ho bisogno di avere la richiesta in sospeso corrente all'interno di una variabile. Quello che ho dentro xhr è una richiesta già completata. Come posso afferrare l'ultima richiesta in sospeso? Grazie per avermi contattato su questo (: –