Вопрос

Чувствуя себя очень гордым после создания формы с отправкой AJAX, я тестирую ее в IE8 и получаю «Сообщение:« количество »не определено». Я читал, что это может быть связано с тем, что более ранние версии IE использовали ActiveX для запросов AJAX, но я очень плохо знаком с JS и не имею реального понимания проблемы, не говоря уже о возможности реализовать исправление .

Вот мой код:

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");
     }
   }
}
Это было полезно?

Решение

Из вашего последнего комментария по вашему вопросу я подозреваю, что вы нигде не определяете «количество» и предполагаете, что оно будет ссылаться на поле формы. Попробуйте это:

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
}

Другие советы

Если количество является полем формы, вам нужно получить его с помощью getElementById, прежде чем использовать его, как вы это сделали с txtname:


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

Вы не можете использовать его прямо из формы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top