2012-01-16 8 views
9

Mi sono imbattuto in questo comando mentre imparavo AJAX. Il ragazzo che ha fatto il tutorial non ha spiegato questo comando, ciò che fanno i parametri all'interno del comando significano e cosa serve per ... Di seguito è riportato il codice che ho usato in:Che cos'è 'xmlhttp.setRequestHeader();' e in quali situazioni viene utilizzato?

<script type="text/javascript"> 

     function insert(){ 
      if(window.XMLHttpRequest){ 
       xmlhttp = new XMLHttpRequest(); 
      }else{ 
       xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); 
      }; 

      xmlhttp.onreadystatechange = function(){ 
       if(xmlhttp.readyState == 4 && xmlhttp.status == 200){ 
        document.getElementById('message').innerHTML = xmlhttp.responseText; 
       }; 
      }; 

      parameters = 'insert_text='+document.getElementById('insert_text').value; 

      xmlhttp.open('POST','ajax_posting_data.php',true); 
      xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); 
      xmlhttp.send(parameters); 
     }; 

    </script> 
+4

Ti suggerisco di buttare via quel tutorial e usare jQuery. Il tuo codice non solo crea inutili variabili globali, ma è anche molto più complicato di quello che sarebbe con jQuery. Inoltre la stringa di query si interromperebbe se il campo di testo contenesse un carattere '&'. – ThiefMaster

+3

Il documento è qui: http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader-method – talnicolas

+6

L'op stava chiedendo di usare JavaScript nativo, non jQuery, quindi perché dire loro di cancellare la loro soluzione esistente. Mi piace imparare come funziona JavaScript nativo in modo da poter capire i compromessi con l'utilizzo di jQuery e prendere decisioni più intelligenti. E "basta usare jQuery" non spiegherà comunque la natura delle intestazioni delle richieste. – gregturn

risposta

14

HTTP è un protocollo . Parte di quel protocollo è il concetto di intestazioni di richiesta. Quando si verifica una xhr, il testo viene scambiato tra il client e il server. Le intestazioni di richiesta fanno parte del testo che il client invia al server.

Questo è un modo per impostare le intestazioni di richiesta. Gli argomenti che vedete sono

1) l'intestazione per impostare (in questo caso, Content-type)
2) il valore dell'intestazione. (In questo caso, x-www-form-urlencoded)

See this for more info.

+0

So che cosa sono le requestHeaders, ma in effetti ho trovato questo esempio utile quando avevo bisogno di estrapolare le intestazioni delle richieste su un'app che non aveva jQuery. – gregturn

0

Si imposta l'intestazione HTTP Content-type per contenere dati codificati URL inviati da un modulo.

3

È esattamente quello che dice. Imposterà le informazioni di "intestazione" per il prossimo XMLHttpRequest.

Un'intestazione è praticamente una coppia chiave/valore. Viene utilizzato per trasmettere informazioni "meta" al server di destinazione per la richiesta in corso. Nella tua istanza particolare, è usato per dire al server quale tipo di contenuto è usato per questa richiesta.