2010-03-22 12 views
5

Nella XMLHttpRequest Spec si dice che:In XMLHttpRequest, dove è la variabile flag di errore?

Lo stato DONE presenta un errore associato flag che indica un certo tipo di errore rete o l'aborto. Può essere sia true che false e ha un valore iniziale di false.

Dice anche qualcosa di simile a un "flag send()" in uno stato "APERTO".

Si dice nelle specifiche ma non nell'IDL e quando creo una nuova XMLHttpRequest non riesco a trovare quelle "bandiere".

Dove sono queste variabili booleane?

+1

Qualsiasi motivo si sta lavorando a questo livello basso? certamente jquery o simili ti daranno risultati migliori. –

+1

@Byron Whitlock, jQuery ajax è solo un wrapper delle chiamate Ajax, e sono d'accordo, ti dà migliori risultati di errore. –

+0

Entrambi avete ragione, alla fine userò jQuery e non ho nemmeno bisogno di usare quei "flag", ma mi piace sapere cosa sta succedendo alla base anche se finalmente userò jQuery per tutti. –

risposta

3

ho wrote alla lista e-mail webapps di quelle bandiere, questo è ciò che they responded:

Tutto ciò che gli autori possono usare è espresso nel Web frammento IDL. Tutto ciò al di fuori di questo rappresenta alcune implementazioni di dati hanno bisogno di per mantenere in un modo o nell'altro a implementare correttamente le specifiche.

(Questo è stato il mio dubbio)

5

La proprietà XMLHttpRequest.readyState è ciò che stai cercando.

Dallo Spec che hai fornito, vedrai che tutti quei flag "booleani" sono in realtà valori numerici.

  • UNSENT (numerico 0)
  • APERTO (numerico 1)
  • HEADERS_RECEIVED (numerico 2)
  • CARICAMENTO (numerico 3)
  • DONE (numerico 4)

Questi valori sono il risultato del gestore di eventi XMLHttpRequest.onreadystatechange. Fondamentalmente, per ottenere quei valori, fare qualcosa di questo effetto.

//In Javascript 
var request = new XMLHttpRequest(); 
if (request) { 
    request.onreadystatechange = function() { 
    if (request.readyState == 4) { //Numeric 4 means DONE 

     } 
    }; 

request.open("GET", URL + variables, true); //(true means asynchronous call, false otherwise) 
request.send(""); //The function that executes sends your request to server using the XMLHttpRequest. 
} 

Tenete a mente, sempre scrivere il onreadystatechange evento PRIMA chiamando il metodo XMLHttpRequest.send() (se si decide di fare chiamate asincrone). Inoltre, le chiamate asincrone chiameranno il listener di eventi XMLHttpRequest.onreadystatechange, quindi è sempre di vitale importanza averlo implementato.

Maggiori informazioni Wikipedia

+1

+1 per aver menzionato che devi definire onreadystatechange prima di chiamare send. Trabocchetto comune. – Warty

+1

Grazie per l'informazione, è pulito e chiaro. Lo sapevo, quello che mi chiedevo è se hai accesso a quelle "bandiere" direttamente nell'oggetto, quello che volevo sapere era più per sicurezza che per applicabilità (è una specie di inutile, lo so). Scusa se non sono stato chiaro nella domanda. Ho anche scritto alla mailing list w3c webapps, lo metto su una nuova risposta. –

+0

@downvoter, che cos'è il downvote? Elaborare per favore. –

4

Ho sentito che l'editor XHR ha detto che il flag di errore fa riferimento nelle specifiche è una variabile implementazione interna che i consumatori non possono accedere.

Stesso accordo con il flag "send()".

+0

Grazie, ho scritto all'editor un po 'di tempo fa e ho ottenuto la risposta, è ciò che hai scritto. Mi dispiace non aver taggato quella risposta come accettata. –

Problemi correlati