Question

Comme je suis très fier de moi après avoir créé un formulaire avec une soumission AJAX, je le teste dans IE8 et reçois le message "Message: la quantité n'est pas définie". J'ai lu que cela pouvait être dû au fait que les versions précédentes d'IE utilisaient ActiveX pour les requêtes AJAX, mais je suis très novice dans JS et je ne comprends pas vraiment le problème, sans parler de la possibilité d'implémenter un correctif. .

Voici mon code:

var time_variable;

function getXMLObject()  //XML OBJECT
{
  var xmlHttp = false;
   try {
     xmlHttp = new ActiveXObject("Msxml2.XMLHTTP")  // For Old Microsoft Browsers
   }
   catch (e) {
     try {
       xmlHttp = new ActiveXObject("Microsoft.XMLHTTP")  // For Microsoft IE 6.0+
     }
     catch (e2) {
       xmlHttp = false   // No Browser accepts the XMLHTTP Object then false
     }
   }
   if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
     xmlHttp = new XMLHttpRequest();        //For Mozilla, Opera Browsers
   }
   return xmlHttp;  // Mandatory Statement returning the ajax object created
}

var xmlhttp = new getXMLObject();   //xmlhttp holds the ajax object

function ajaxFunction() {
  var getdate = new Date();  //Used to prevent caching during ajax call
  if(xmlhttp) { 
    var txtname = document.getElementById("txtname");
    xmlhttp.open("POST","slots.php",true); //calling     testing.php using POST method
    xmlhttp.onreadystatechange  = handleServerResponse;
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlhttp.send("quantity=" + quantity.value + "&price=" + price.value + "&slot=" +         slot.value + "&store=" + store.value); //Posting txtname to PHP File


  }
}

function handleServerResponse() {
   if (xmlhttp.readyState == 4) {
     if(xmlhttp.status == 200) {
       document.getElementById("message").innerHTML=xmlhttp.responseText; //Update the     HTML Form element 
     }
     else {
        alert("Error during AJAX call. Please try again");
     }
   }
}
Était-ce utile?

La solution

D'après votre dernier commentaire sur votre question, je soupçonne que vous ne définissez pas la «quantité» n'importe où et en supposant qu'elle fasse référence au champ de formulaire. Essayez ceci:

if(xmlhttp) { 
    var txtname = document.getElementById("txtname");
    var quantity = document.getElementById("quantity");
    var price = document.getElementById("price");
    var store = document.getElementById("store");
    xmlhttp.open("POST","slots.php",true); //calling     testing.php using POST method
    xmlhttp.onreadystatechange  = handleServerResponse;
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlhttp.send("quantity=" + quantity.value + "&price=" + price.value + "&slot=" +               slot.value + "&store=" + store.value); //Posting txtname to PHP File
}

Autres conseils

Si la quantité est un champ de formulaire, vous devez l'obtenir à l'aide de getElementById avant de l'utiliser, exactement comme vous le faisiez avec txtname:


var quantity = document.getElementById("quantity");

Vous ne pouvez pas l'utiliser directement à partir du formulaire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top