Andrey_rus
Новичок
readyState входит только в состояние 1
Для созданного объекта XMLHtppRequest задаю необходимые параметры и в том числе функцию обратного вызова (ожидания)
В функции handleRequestStateChange ожидается состояние readyState == 4^
Так вот состояние readyState всегда равняется единице, т.е. запрос формируется, но xmlHtpp.send уже не работает. Вопрос: почему? Тесты показали, что рушится все как раз при вызове xmlHtpp.send.
Код основан на примере из книжки "AJAX и PHP" К. Дари
На всякий случай приведу код формирования ссылки на объект XMLHttpRequest, но практически уверен проблема не здесь:
Для созданного объекта XMLHtppRequest задаю необходимые параметры и в том числе функцию обратного вызова (ожидания)
PHP:
xmlHttp.open("POST", "validate.php", true);
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.onreadystatechange = handleRequestStateChange;
xmlHtpp.send(null);
PHP:
function handleRequestStateChange() { // Вывод текущего состояния (для дебага)
document.getElementById('reg_error').innerHTML = xmlHttp.readyState;
// Когда readyState == 4, мы можем прочитать ответ сервера
if(xmlHttp.readyState == 4) {
// Продолжить, только если статус HTTP равен "ОК" - 200
if(xmlHttp.status == 200) {
// Прочитать ответ полученный от сервера
try {
readResponse();
} catch (e) {
}
}
}
}
Код основан на примере из книжки "AJAX и PHP" К. Дари
На всякий случай приведу код формирования ссылки на объект XMLHttpRequest, но практически уверен проблема не здесь:
PHP:
// Функция создания экземпляра объекта XMLHttpRequest
function createXMLHttpRequestObject() {
// Переменная для хранения ссылки на объект XMLHttpRequest
var xmlHttp;
// Попытка создать объект по новому образцу
// Работает для всех браузерах за исключением Explorer 6 и более ранних
try {
// Попытка создать объект XMLHttpRequest
xmlHttp = new XMLHttpRequest();
} catch(e) {
// Если браузер все же старой версии (Explorer 6 или ранее),
// то пытаемся создать объект другой версии
var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
"MSXML2.XMLHTTP.5.0",
"MSXML2.XMLHTTP.4.0",
"MSXML2.XMLHTTP.3.0",
"MSXML2.XMLHTTP",
"Microsoft.XMLHTTP");
// Попробовать все возможные prog id пока какой-нибудь не подойдет
for(var i = 0; i < XmlHttpVersions.length && !xmlHttp; i++) {
try {
// Попытка создать объект XMLHtppRequest
xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
} catch (e) {}
}
}
// Вернуть созданный объект или вывести сообщение об ошибке
if(!xmlHttp) {
alert('Ошибка создания объекта XMLHttpRequest');
} else {
return xmlHttp;
}
}