Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.08.2009, 15:16
Интересующийся
Отправить личное сообщение для maxsoftware Посмотреть профиль Найти все сообщения от maxsoftware
 
Регистрация: 10.08.2009
Сообщений: 10

Помогите разобраться
Здравствуйте!
Написал Ajax приложение для поиска улиц.
_http://test.***.ru/streets.html
До вывода списка найденных улиц функция past_street(); работает успешно (заменяет значение в поле формы), но после того как появляется <select> при нажатии на "вставить" или на значение в выпадающем списке ничего не происходит. В чём может быть проблема?

Последний раз редактировалось maxsoftware, 11.08.2009 в 12:10.
Ответить с цитированием
  #2 (permalink)  
Старый 10.08.2009, 23:08
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Во-первых, как сделать, чтоб появился select?
Во-вторых, лучше работайте с DOM методами, а не получением элементов из свойств объектов:
function past_street(street) {
	  document.getElementsByName('street')[0].value=street;
}

var request = null;

  function createRequest() {
     try {
       request = new XMLHttpRequest();
     } catch (trymicrosoft) {
       try {
         request = new ActiveXObject("Msxml2.XMLHTTP");
       } catch (othermicrosoft) {
         try {
           request = new ActiveXObject("Microsoft.XMLHTTP");
         } catch (failed) {
           request = null;
         }
       }
     }

     if (request == null)
       alert("Error creating request object!");
   }

   function send() {
       createRequest();
       street = document.getElementsByName('street')[0].value;
       if(street.length > 3) {
           var url = "streets.php?street=" + street;
           request.open("GET", url, true);
           request.onreadystatechange = update;
           request.send(null);
       }
   }

   function update() {
      if(request.readyState == 4) {
        if(request.status == 200) {
           var response_div = document.getElementById("response");
		   response_div.innerHTML = request.responseText;

        } else alert("Error! Request status is " + request.status);
      }
   }
Ответить с цитированием
  #3 (permalink)  
Старый 11.08.2009, 11:26
Интересующийся
Отправить личное сообщение для maxsoftware Посмотреть профиль Найти все сообщения от maxsoftware
 
Регистрация: 10.08.2009
Сообщений: 10

Спасибо большое, помогло!
function past_street(street) {
      document.getElementsByName('street')[0].value=street;
}

Select генерируется с помощью PHP.
Ответить с цитированием
  #4 (permalink)  
Старый 14.08.2009, 10:18
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

telepat mode: возможно, после добавления чего-либо в dom нужно повторно назначить обработчик
Ответить с цитированием
  #5 (permalink)  
Старый 14.08.2009, 10:57
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от x-yuri
telepat mode
Ответить с цитированием
  #6 (permalink)  
Старый 14.08.2009, 10:58
Интересующийся
Отправить личное сообщение для maxsoftware Посмотреть профиль Найти все сообщения от maxsoftware
 
Регистрация: 10.08.2009
Сообщений: 10

В IE вообще ничего не работает, вот пример _http://www.italii.ru/catalogue/
При вводе слова в форму например "max" появляются подсказки, всё работает в Opere и Firefox, но в IE нет. Что только не делал. В чём проблема?

function past_result(search) {
      if(navigator.appName == "Microsoft Internet Explorer") {
          document.forms['search_form'].elements['search'].value = search;
      } else if(navigator.appName == "Opera") {
          document.forms['search_form'].elements['search'].value = search;
      } else if(navigator.appName == "Netscape") {
          document.getElementsByName('search')[0].value=search;
      } else {
          document.forms['search_form'].elements['search'].value = search;
      }
      var response_div = document.getElementById("response");
      response_div.innerHTML = '';
}


var request = null;
  function createRequest() {
     try {
       request = new XMLHttpRequest();
     } catch (trymicrosoft) {
       try {
         request = new ActiveXObject("Msxml2.XMLHTTP");
       } catch (othermicrosoft) {
         try {
           request = new ActiveXObject("Microsoft.XMLHTTP");
         } catch (failed) {
           request = null;
         }
       }
     }

     if (request == null)
       alert("Error creating request object!");
   }

   function send() {
       createRequest();
       //search = document.forms[0].search.value;
       search = document.forms['search_form'].elements['search'].value;

       if(search.length > 1) {
           if(navigator.appName == "Microsoft Internet Explorer") {
               var url = "http://www.italii.ru/xajax/ajax_search.php?iconv&search=" + search;
           } else if(navigator.appName == "Opera") {
           	   var url = "http://www.italii.ru/xajax/ajax_search.php?iconv&search=" + search;
           } else if(navigator.appName == "Netscape") {
           	   var url = "http://www.italii.ru/xajax/ajax_search.php?search=" + search;
           } else {
           	  var url = "http://www.italii.ru/xajax/ajax_search.php?iconv&search=" + search;
           }

           request.open("GET", url, true);
           request.onreadystatechange = update;
           request.send(null);
       } else {
             var response_div = document.getElementById("response");
          response_div.innerHTML = '';
       }
   }

   function update() {
      if(request.readyState == 4) {
        if(request.status == 200) {
           var response_div = document.getElementById("response");
           response_div.innerHTML = request.responseText;

        } else alert("Error! Request status is " + request.status);
      }
   }


Пришлось даже с navigator.appName извратиться.
Ответить с цитированием
  #7 (permalink)  
Старый 14.08.2009, 11:20
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

ошибки какие-то выдаются в ie?

не надо тут с navigator.appName извращаться: используй utf-8
Ответить с цитированием
  #8 (permalink)  
Старый 14.08.2009, 11:28
Интересующийся
Отправить личное сообщение для maxsoftware Посмотреть профиль Найти все сообщения от maxsoftware
 
Регистрация: 10.08.2009
Сообщений: 10

Я то с радостью использовать utf-8, но клиенту не докажешь.
По поводу IE
Строка: 40
Ошибка: Объект не поддерживает это свойство или метод.
Ответить с цитированием
  #9 (permalink)  
Старый 14.08.2009, 11:48
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

а клиент такие умные слова знает O_o может попробовать сменить клиента?
какая строка 40-ая? Лучше включи отладчик и посмотри, на какой строке он остановился
Ответить с цитированием
  #10 (permalink)  
Старый 14.08.2009, 11:56
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от maxsoftware
Я то с радостью использовать utf-8, но клиенту не докажешь.
А клиенту какая разница в какой кодировке сайт?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться с Dojo greendoc Dojo toolkit 4 13.10.2011 18:19
Помогите разобраться с кодом. TheWanderer Общие вопросы Javascript 10 17.04.2010 13:41
Помогите разобраться со скриптом! Чайник Элементы интерфейса 1 13.03.2009 23:57
Помогите разобраться с логикой поведения скрипта MarkupDeveloper jQuery 3 21.06.2008 18:04
Помогите разобраться с проблемой SergeiAzarov (X)HTML/CSS 0 28.03.2008 18:51