Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2011, 01:30   #1
blaqdog
 
Регистрация: 01.02.2011
Сообщений: 5
По умолчанию не выполняется readyState == 4

Здравствуйте, возникла следующая проблема:
скрипт отсылает асинхронный запрос серверу который возвращает 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()
{

}
при проверке этапов выполнения функции handleRequest выводится только сообщение "function started" и дальше ничего не происходит, firebug ни на что не ругается, и показывает что через POST вернулся xml, где у меня ошибка. Спасибо

ps удалил содержимое функции setName, что бы тема создалась(слишком много символов)
blaqdog вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
webbrowser iframe readystate//oleobject//отобразить часть страницы Jakethefish Работа с сетью в Delphi 2 03.09.2011 19:36
Не выполняется условие Ragnarek45 Общие вопросы Delphi 3 10.12.2010 15:08
не выполняется условие Link12 Общие вопросы C/C++ 6 30.03.2010 19:36
Не выполняется PHP скрипт xxxholic PHP 2 13.12.2009 12:56
Компилируется,но не выполняется. Lunex.08 C++ Builder 6 19.11.2009 12:17