Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.07.2011, 09:59
Интересующийся
Отправить личное сообщение для Jude Посмотреть профиль Найти все сообщения от Jude
 
Регистрация: 12.06.2011
Сообщений: 14

Подгрузка скрипта связанных селектов
Статья: http://www.tigir.com/javascript_select.htm и скрипт оттуда:
<html>
  <head>
  <title>Связанные селекты</title>
  
  <!-- Подключаем javascript-библиотеку функций -->
  <script type="text/javascript" src="http://www.tigir.com/js/linkedselect.js"></script>
</head>

<body>

<!-- Первый (главный) список (изначально заполнен вручную) -->
  <select size="4" id="List1">

    <option value="ie"> Internet Explorer </option>
    <option value="safari"> Safari </option>
  </select>
  
<!-- Подчиненный список 1 (изначально пуст) -->
  <select size="4" id="List2"></select>
  
<!-- Подчиненный список 2 (изначально пуст) -->
  <select size="4" id="List3"></select>

  
<script type="text/javascript">
// Создаем новый объект связанных списков
var syncList1 = new syncList;

// Определяем значения подчиненных списков (2 и 3 селектов)
syncList1.dataList = {

/* Определяем элементы второго списка в зависимости 
от выбранного значения в первом списке */

  'ie':{
      'ie_win':'Windows',
      'ie_mac':'Mac'
  },
  
  'safari':{
      'safari_mac':'Mac'
  },

/* Определяем элементы третьего списка в зависимости 
от выбранного значения во втором списке */

  'ie_win':{
      'ie_win_5':'версия 5',
      'ie_win_6':'версия 6'
  },
  
  'ie_mac':{
      'ie_mac_5':'версия 5'
  },
  
  'safari_mac':{
      'safari_mac_1':'версия 1',
      'safari_mac_2':'версия 2'
  }
};

// Включаем синхронизацию связанных списков
syncList1.sync("List1","List2","List3");
</script>

</body>
</html>

Проблема: скрипт не работает, если его подключить аяксом, даже если вытащить весь код с http://www.tigir.com/js/linkedselect.js и вставить в подгружаемый файл. Работает только при перезагрузке страницы, а при аяксе ноль реакции, полагаю, конструктор (или что-то такое) не определяется:
var syncList1 = new syncList;

Почему не работает при аяксе и как это исправить?

p.s.: подключаю (вернее происходит некий релоад страницы аяксом на связанные селекты) весь код, который приведен выше.
Ответить с цитированием
  #2 (permalink)  
Старый 10.07.2011, 10:48
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

Где в Вашем скрипте AJAX ?
Ответить с цитированием
  #3 (permalink)  
Старый 10.07.2011, 11:20
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

домны разные ?

кто говорит консоль?

неверно пользуетесь?

тут телепатов нет
Ответить с цитированием
  #4 (permalink)  
Старый 10.07.2011, 21:44
Интересующийся
Отправить личное сообщение для Jude Посмотреть профиль Найти все сообщения от Jude
 
Регистрация: 12.06.2011
Сообщений: 14

Цитата:
Где в Вашем скрипте AJAX ?
Зачем там аякс? Я подгружаю этот скрипт аяксом, а он не работает. Не вижу смысла выкладывать файл с аяксом.
Цитата:
домны разные ?
Нет
Цитата:
кто говорит консоль?
Молчит
Цитата:
неверно пользуетесь?
Чем? Аяксом? А вы попробуйте этот скрипт подгрузить аяксом и у вас нифига не заработает %)
Ответить с цитированием
  #5 (permalink)  
Старый 10.07.2011, 22:50
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

господи Иисусе.

и где же он тут не работает?

и что такое, подключаю файл аяксом? подключайте через создание тега <script>
Пример: запускай
<html>
  <head>
  <title>Связанные селекты</title>
  
  <!-- Подключаем javascript-библиотеку функций -->
  <script type="text/javascript" src="http://www.tigir.com/js/linkedselect.js"></script>
</head>

<body>

<!-- Первый (главный) список (изначально заполнен вручную) -->
  <select size="4" id="List1">

    <option value="ie"> Internet Explorer </option>
    <option value="safari"> Safari </option>
  </select>
  
<!-- Подчиненный список 1 (изначально пуст) -->
  <select size="4" id="List2"></select>
  
<!-- Подчиненный список 2 (изначально пуст) -->
  <select size="4" id="List3"></select>

  
<script type="text/javascript">
// Создаем новый объект связанных списков
var syncList1 = new syncList;

// Определяем значения подчиненных списков (2 и 3 селектов)
syncList1.dataList = {

/* Определяем элементы второго списка в зависимости 
от выбранного значения в первом списке */

  'ie':{
      'ie_win':'Windows',
      'ie_mac':'Mac'
  },
  
  'safari':{
      'safari_mac':'Mac'
  },

/* Определяем элементы третьего списка в зависимости 
от выбранного значения во втором списке */

  'ie_win':{
      'ie_win_5':'версия 5',
      'ie_win_6':'версия 6'
  },
  
  'ie_mac':{
      'ie_mac_5':'версия 5'
  },
  
  'safari_mac':{
      'safari_mac_1':'версия 1',
      'safari_mac_2':'версия 2'
  }
};

// Включаем синхронизацию связанных списков
syncList1.sync("List1","List2","List3");
</script>

</body>
</html>
Ответить с цитированием
  #6 (permalink)  
Старый 10.07.2011, 23:36
Интересующийся
Отправить личное сообщение для Jude Посмотреть профиль Найти все сообщения от Jude
 
Регистрация: 12.06.2011
Сообщений: 14

Аякс (сюда будет загружаться выше приведенный код):
<span id="response">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

<title>666</title>

<script language="javascript" type="text/javascript">

function XHR(){

var request;

  try {

    request = new ActiveXObject("Msxml2.XMLHTTP");

  } catch (e) {

    try {

      request = new ActiveXObject("Microsoft.XMLHTTP");

    } catch (e) {

      request = false;

    }

  }

  if (!request && typeof XMLHttpRequest!='undefined') {

    request = new XMLHttpRequest();

  }

  return request;

}

var request = XHR();



function GetResponse(div2show)

{

	if(request.readyState == 4)

	{

		if(request.status == 200)

		{	

			document.getElementById(div2show).innerHTML = request.responseText;

		}

	}

}



function SendReq(file,div2show)

{

	request.open("GET", file, true);

	request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

	request.onreadystatechange = function() { GetResponse(div2show); };

	request.send(null);

}

</script>

</head>

<body>

<form action="index.php" name="form" method="POST">

<input type="submit" value="ок" name="submit" onClick="SendReq('index.php','response'); return false;"><br>

</form>

</body>

</html>
</span>

Но второй скрипт не работает при такой загрузке. Где я туплю?
Ответить с цитированием
  #7 (permalink)  
Старый 11.07.2011, 21:32
Кандидат Javascript-наук
Отправить личное сообщение для Slavenin Посмотреть профиль Найти все сообщения от Slavenin
 
Регистрация: 20.11.2010
Сообщений: 143

может я конечно и ошибаюсь, но результатом ajax ответа является строка, может стоит попробовать прогнать ее через eval?
__________________

Ответить с цитированием
  #8 (permalink)  
Старый 13.07.2011, 09:20
Интересующийся
Отправить личное сообщение для Jude Посмотреть профиль Найти все сообщения от Jude
 
Регистрация: 12.06.2011
Сообщений: 14

Делал так:
document.getElementById(div2show).innerHTML = eval(request.responseText);

В консоли ругается на {} в строке:
function syncList(){} //Определяем функцию конструктор

В скрипте по ссылке: http://www.tigir.com/js/linkedselect.js

Поставил между скобок alert('x') и эта ошибка исчезла, но потом стало ругаться на строку с циклом:
for (var i=0; i < arguments.length-1; i++)	document.getElementById(arguments[i]).onchange = (function (o,id1,id2){return function(){o._sync(id1,id2);};})(this, arguments[i], arguments[i+1]);

Что не так?

Последний раз редактировалось Jude, 16.07.2011 в 00:58.
Ответить с цитированием
  #9 (permalink)  
Старый 16.07.2011, 00:57
Интересующийся
Отправить личное сообщение для Jude Посмотреть профиль Найти все сообщения от Jude
 
Регистрация: 12.06.2011
Сообщений: 14

Что же делать?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подгрузка скрипта перед редиректом ссылки Cepin Javascript под браузер 4 10.12.2010 21:06
динамическая подгрузка скрипта jetli13 Общие вопросы Javascript 1 13.07.2010 16:15
Динамическая подгрузка скрипта format1981 Общие вопросы Javascript 7 23.10.2009 12:40
Подгрузка скрипта партнерки Atonik Я не знаю javascript 1 26.05.2009 18:15
Подгрузка ява скрипта . можно ли AntonPetrovich Общие вопросы Javascript 9 13.10.2008 12:33