Javascript.RU

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

PHP массив вытащить в JS
Всем доброго!

Скажите пожалуйста, как реализовать такую схему и возможно ли это?

Есть массив

<?
$model = array (
'Honda'=>array('Accord', 'Accord Inspire', 'Acty', 'Acty Truck'),
'Mazda'=>array('Atenza', 'Autozam', 'AZ-3','Autozam Revue','Axela'),
'Nissan'=>array('AD', 'Almera', 'Almera Classic'),
);
?>


Далее скрипт и форма


<script>

function loadCar(v){
   var mas = eval(<?=json_encode($model["Honda"])?>);
    var el = document.getElementById('names');
    while(el.childNodes.length>0){
        el.removeChild(el.childNodes[el.childNodes.length-1]);

    }
    for(var i=0;i<mas.length;i++){
        var opt = document.createElement("option");
        opt.innerHTML=mas[i];
        el.appendChild(opt);
    }

}
</script>



<form>
<select  id="f_MarkaModel" name="f_MarkaModel"  onchange="loadCar(this.value)">
    <?
    foreach ($model as $brand => $carList)
    {
echo '<option onchange="loadModel('.$brand.')" value="' . $brand . '">' . $brand . '</option>' . "\n";
    }
    ?>
</select>
 
<select id="names">
         <option>Выберите модель</option>
</select>
</form>


Собственно вопрос в том, как мне получить не список hond а то, что появляется в (v) после смены селектора.
Ответить с цитированием
  #2 (permalink)  
Старый 06.11.2014, 10:53
Аватар для Viral
Профессор
Отправить личное сообщение для Viral Посмотреть профиль Найти все сообщения от Viral
 
Регистрация: 26.04.2011
Сообщений: 472

Я так понял, это надо?
<script>

function loadCar(v){

alert(v);

}
</script>
<form>
<select  id="f_MarkaModel" name="f_MarkaModel"  onchange="loadCar(this.value)">
    <option value="kill">kill</option>
    <option value="all">all</option>
    <option value="humans">humans</option>
</select>
</form>
Ответить с цитированием
  #3 (permalink)  
Старый 06.11.2014, 11:15
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от idontknow
var mas = eval(<?=json_encode($model["Honda"])?>);
Бред какой-то.

Поскольку нет value у опшинов, то и получить там можно только индекс, который в общем и будет совпадать с индексом элемента массива.
Ответить с цитированием
  #4 (permalink)  
Старый 06.11.2014, 11:22
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Нашел на js, принцип такой: вопрос - ответ, сервер выдает список с id. По id как есть все валится в объект, типа кэша, если юзер еще раз такой же выбор сделает, ну сидит тычет пагу, то скрипт проверяет есть такой id и, если есть - сервер не трогает, берет из свалки, иначе вопрос - ответ - в свалку. В финале рендер

var pop_filters = function(id) {
			
		var filters = JSON.parse(raw_filters[id]);
				
		// clear data list
		while (filter_datalist.lastChild)
		  filter_datalist.removeChild(filter_datalist.lastChild);
		
		for(var i in filters) {
				
			var op = document.createElement('option');
			op.value = filters[i];
			op = filter_datalist.appendChild(op);
			op.appendChild(document.createTextNode(filters[i]));
			
		}
	
	};
Ответить с цитированием
  #5 (permalink)  
Старый 06.11.2014, 11:23
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

filter_datalist - datalist, который тут ничем от select не отличается.

Ну вот, по тексту функции значение записывается одновременно в валуе и в текст.
Ответить с цитированием
  #6 (permalink)  
Старый 06.11.2014, 11:25
Интересующийся
Отправить личное сообщение для idontknow Посмотреть профиль Найти все сообщения от idontknow
 
Регистрация: 06.11.2014
Сообщений: 17

Вообще-то вопрос был не по коду. В том виде, в котором он написан - он работает. Выводит массив хонда, но при смене марки авто, когда alert(v); показывает Mazda или Nissan он не сработает так, ибо php уже не работает... тут надо ajax использовать или как-то еще... хм... но я не знаю как это реализовать, вот и прошу помощи.
Ответить с цитированием
  #7 (permalink)  
Старый 06.11.2014, 11:29
Аватар для Viral
Профессор
Отправить личное сообщение для Viral Посмотреть профиль Найти все сообщения от Viral
 
Регистрация: 26.04.2011
Сообщений: 472

idontknow, подожди, у тебя внутри функции loadCar(v) есть переменная v, в которой у тебя value из <option>($brand).
зачем тебе лишний запрос к серверу, если на клиенте все данные уже есть?
Или что тебе надо вернуть?
Уточни вопрос.
Ответить с цитированием
  #8 (permalink)  
Старый 06.11.2014, 11:30
Интересующийся
Отправить личное сообщение для idontknow Посмотреть профиль Найти все сообщения от idontknow
 
Регистрация: 06.11.2014
Сообщений: 17

угу, есть! но массив у меня в php

<?=json_encode($model["Honda"])?>

как вместо "Honda" я поставлю loadCar(v) ?

В этом-то и есть вопрос собственно
Ответить с цитированием
  #9 (permalink)  
Старый 06.11.2014, 11:39
Аватар для Viral
Профессор
Отправить личное сообщение для Viral Посмотреть профиль Найти все сообщения от Viral
 
Регистрация: 26.04.2011
Сообщений: 472

idontknow, ах вот оно чо))
ну.. логика такая:
вот тут смотри, как использовать XHR. Отправляешь пыхе эту v, на той стороне уже пыхой смотришь, что пришло и возвращаешь (прямо вот <?=json_encode($model[то, что пришло (v) ])?>), но только смотри, чтобы ничего лишнего не вернулось) и на этой стороне кидаешь то, что вернулось в переменную mas..
Ответить с цитированием
  #10 (permalink)  
Старый 06.11.2014, 11:45
Интересующийся
Отправить личное сообщение для idontknow Посмотреть профиль Найти все сообщения от idontknow
 
Регистрация: 06.11.2014
Сообщений: 17

спасибо за совет. я тут и сам уже в эту сторону смотрю и пытаюсь это сделать, но пока не получается. методов кучу перепробовал... вот и думал, что кто-то может знает как это по шагам сделать. Потому как не получается у меня вернуть ничего.

Буду дальше пробовать, но люди добрые, может кто-то знает как это реализовать с лёту? Буду премного благодарен.

пока же читаю, смотрю и пробую методом работает/неработает кучу примеров
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как подключить данные с PHP по средствам JS на удаленный сервер. Nyam Элементы интерфейса 13 11.04.2014 17:14
serialize-unserialize js php прошу помощи mrmammoth Общие вопросы Javascript 5 19.03.2014 16:16
Передать js переменную в php посредством ajax wayzer Элементы интерфейса 17 31.12.2012 14:41
Как передавать параметры из php скрипта в js imissyouso Общие вопросы Javascript 3 01.08.2012 18:24
JS + php возврат информации Phantom Общие вопросы Javascript 1 28.09.2011 17:53