Здравствуйте, возникла следующая проблема:
скрипт отсылает асинхронный запрос серверу который возвращает xml документ, но в js не выполняется readyState == 4, тоесть состояние готовности не доходит до выполненного, хотя в firebug пишет готовность 4, код 200 и показывает правильный xml код
вот скрипт
// JavaScript Document
//создание запроса для проверки логина и пароля
var xmlLogin = new createXmlHttpRequestObject();
//создает экземпляр объекта XMLHttpRequest
function createXmlHttpRequestObject()
{
// переменная для хранения ссылки на объект XMLHttpRequest
var xmlHttp;
// this should work for all browsers except IE6 and older
try
{
// try to create XMLHttpRequest object
xmlHttp = new XMLHttpRequest();
}
catch(e)
{
// assume IE6 or older
var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
"MSXML2.XMLHTTP.5.0",
"MSXML2.XMLHTTP.4.0",
"MSXML2.XMLHTTP.3.0",
"MSXML2.XMLHTTP",
"Microsoft.XMLHTTP");
// try every prog id until one works
for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++)
{
try
{
// try to create XMLHttpRequest object
xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
}
catch (e) {}
}
}
// return the created object or display an error message
if (!xmlHttp)
alert("Error creating the XMLHttpRequest object.");
else
return xmlHttp;
}
//функция отправляет на сервер информацию для проверки логина и пароля
function login()
{
try
{
// если запросов нет или запрос уже вернулся
if (xmlLogin.readyState == 4 ||
xmlLogin.readyState == 0)
{
//определить переменные
var oLogin = document.getElementById("login").value;
var oPassword = document.getElementById("password").value;
//обезать пробелы
//oTovar = trim(oTovar);
//определить передаваемые данные
var params = "";
params += "login=" + encodeURIComponent(oLogin) +
"&pass=" + encodeURIComponent(oPassword);
// инициирует запрос xmlHttpRequest
xmlLogin.open("POST", "test.php", true);
xmlLogin.setRequestHeader("Content-Type",
"application/x-www-form-urlencoded");
xmlLogin.onreadystatechange = handleRequest();
xmlLogin.send(params);
}
else
{
// display the error message
displayError(xmlLogin.statusText);
}
}
catch(e)
{
//вывести сообщение об ошибке при неудачной попытке
//установить соединение с сервером
displayError(e.toString());
}
}
// функция показывает сообщение об ошибке
function displayError(message)
{
// display error message, with more technical details if debugMode is true
alert("Обнаружена ошибка: \n" + message);
}
//проверить что вернулось после запроса
function handleRequest()
{alert("function started");
//когда readyState = 4, мы можем прочитать ответ сервера
if (xmlLogin.readyState == 4)
{alert("readyState 4");
// продолжать если статус равен ОК
if (xmlLogin.Status == 200)
{alert("status 200");
try
{
// вывести имя пользователя
setName();
}
catch(e)
{
// display error message
displayError(e.toString());
}
}
else
{
// display status message
displayError(xmlLogin.statusText);
}
}
}
//если вернулось имя значит логин, если ошибка то написать
function setName()
{
// read the message from the server
var xmlResponse = xmlLogin.responseXML;
// catching potential errors with IE and Opera
if (!xmlResponse || !xmlResponse.documentElement)
throw("Invalid XML structure:\n" + xmlHttp.responseText);
// catching potential errors with Firefox
var rootNodeName = xmlResponse.documentElement.nodeName;
if (rootNodeName == "parsererror") throw("Invalid XML structure");
// obtain the XML's document element
xmlRoot = xmlResponse.documentElement;
// obtain arrays with book titles and ISBNs
nameArray = xmlRoot.getElementsByTagName("name");
passArray = xmlRoot.getElementsByTagName("pass");
// generate HTML output
var html = "";
// iterate through the arrays and create an HTML structure
for (var i=0; i<nameArray.length; i++)
html += nameArray.item(i).firstChild.data +
", " + tovarArray.item(i).firstChild.data ;
alert(html);
// obtain a reference to the <div> element on the page
myDiv = document.getElementById("userDiv");
// display the HTML output
myDiv.innerHTML = html;
}
при проверке выполнения этапов функции handleRequest выводится только сообщение "function started" и дальше ничего не происходит, firebug ни на что не ругается, и показывает что через POST вернулся xml, в IE выскакивает следующее сообщение: "Обнаружена ошибка [object Error]". Где у меня ошибка? Спасибо