2009-11-09 13 views
1

J'ai étudié le JavaScript à partir d'un livre. Une fois que je jouais avec les codes concernant la communication de site client serveur, je voulais faire une requête POST avec le code ci-dessous (qui utilise IE objet ActiveX XMLHttpRequest):Quelle est la différence entre les fonctions submit() et send() JavaScript?

<script type="text/javascript"> 

var oRequest = HTTPRequestUtil.getXmlHttp(); 

var sRequestType = "post"; 
var sURLofRequest = "MyPage.aspx"; 
var bAsnychronously = false; 

oRequest.open(sRequestType, sURLofRequest, bAsnychronously); 
oRequest.send(null); 

alert ('Status is '+oRequest.status+' ('+oRequest.statusText+')'); 
alert ('Response text is '+oRequest.responseText); 

</script> 

J'ai point d'arrêt sur la eventhandler page_load de la page MyPage.aspx "Je m'attendais à ce que l'exécution s'arrête à cet endroit quand ce HttpRequest survient dessus (il est appelé sur un clic de bouton html)

La chose est, la requête est terminée, le responseText est obtenu (qui était le contenu xml de la page) et pas d'arrêt à la méthode Page_Load où j'ai mis un point d'arrêt

Donc, maintenant je ne peux pas comprendre la différence entre l'appel de la fonction .send() avec le type de requête POST et la fonction submit() sur l'appel.

J'apprécierais si vous pouvez expliquer les différences principales brièvement.

merci!

Répondre

1

La différence est que l'utilisation send envoie les données à la routine d'appel JavaScript sans recharger la page, mais appelant submit sur un formulaire soumet le formulaire au serveur et recharge ensuite les résultats à partir du serveur comme si l'utilisateur avait cliqué sur le bouton d'envoi du formulaire. Le "send" est ce qu'on appelle Ajax, et c'est par exemple comment les boutons de vote Stackoverflow fonctionnent pour renvoyer les votes au serveur sans recharger la page entière.

+0

Merci. L'exemple ici (http://msdn.microsoft.com/en-us/library/ms535874%28VS.85%29.aspx) est parallèle à votre dicton: "Le 'send' est ce qu'on appelle Ajax " – pencilCake

+0

@pencilCake il devrait simplement dire 'envoyer' est utilisé pour ** AJAX ** PERIODE! –