IE8 هو كسر بلدي AJAX ... FF على ما يرام
-
06-07-2019 - |
سؤال
والشعور بالفخر من نفسي بعد إنشاء نموذج مع أجاكس تقديم، واختباره في IE8 والحصول على "رسالة:" كمية "غير محددة". لقد قرأت أنه يمكن أن يكون أن تفعل شيئا مع حقيقة أن الإصدارات السابقة من IE تستخدم اكتف لطلبات 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");
وأنت غير قادر على استخدامها مباشرة من النموذج.
لا تنتمي إلى StackOverflow