Salut,
Je voulais m'initier un peu à l'ajax toussa, mais ça se passe pas comme prévu...
Voila mon code :
Code :
- function getHTTPObject()
- {
- var xmlhttp = false;
- if(document.all)
- {
- xmlhttp = new ActiveXObject("Microsoft.XMLHTTP" ) ;
- }
- else
- {
- xmlhttp = new XMLHttpRequest();
- }
- if (xmlhttp)
- {
- xmlhttp.onreadystatechange=function()
- {
- if (xmlhttp.readyState == 4) /* 4 : état "complete" */
- {
- alert(xmlhttp.readyState);
- if (xmlhttp.status == 200) /* 200 : code HTTP pour OK */
- {
- alert (xmlhttp.responseText);
- //response = xmlhttp.responseXML.documentElement;
- .... ( traitement appel de SpUpdate(response) )
- }
- }
- }
- }
- return xmlhttp;
- }
|
Ca c'est la fonction qui est appelé par mon formulaire (onSubmit="SpUpdate('')" ) et qui servira aussi de fonction de traitement pour le retour
Code :
- function SpUpdate(response)
- {
- //Receive data
- if (response!='')
- {
- }
- //Send data
- else
- {
- var xmlhttp = getHTTPObject();
- if (!xmlhttp)
- {
- return true;
- }
- xmlhttp.open("POST", "aj.php",true);
- xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
- var query= 'spDate='+document.getElementById('spDate').value;
- if (document.getElementById('spType').checked)
- {
- query = query +'&spType=2';
- }
- xmlhttp.send(query);
- return false;
- }
- }
|
Ca c'est ce que renvoie aj.php
Code :
- <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
- <response>
- <method>SpUpdate</method>
- <data>.....</data>
- </response>
|
Les problèmes :
(1) J'ouvre une nouvelle page, je clique sur le submit de mon form, ca m'alerte bien le xmlhttp.readyState =4, puis ça m'alerte parfaitement le contenu de la réponse. Par contre, le formulaire est quand même envoyé par l'action du formulaire, malgré le return false à la fin...
(2) Ensuite, si je reclique sur mon submit, pas d'alertes, rien, ca passe directement par l'action du formulaire....Par contre, si j'ouvre une nouvelle page, ca remarche et je peux recommencer le (1)....
Ca m'affice le 4 du readyState, mais rien d'autre. Le formulaire est envoyé par l'action du form, mais contrairement à IE, je peux recliquer sur le formulaire et ca recommence le cycle. Par contre, la console JS me renvoie ça:
[quote]
Error: [Exception... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.status]" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: http://localhost/home/modules/aj_scripts.js :: anonymous :: line 23" data: no]
Source File: http://localhost/home/modules/aj_scripts.js
Line: 23
[quote]
La ligne 23 correspond au if (xmlhttp.status == 200)....
Je comprend pas....
Donc si quelqu'un a une idée, je suis preneur. Merci