Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   JSON и его сразу в скрипт! (https://javascript.ru/forum/misc/35206-json-i-ego-srazu-v-skript.html)

KupueIIIKo 03.02.2013 17:10

JSON и его сразу в скрипт!
 
$category_get_json = json_encode($category_get_res,JSON_UNESCAPED_UNICODE);

выдает функция

<script>
var category =[];
category = <?echo category_get();?>;
console.log(category.length);
for (var i=0;i<=category.length;i++){
	console.log(i+"="+category[i].name);
}
</script>


Выводит в лог с ошибкой TypeError: category[i] is undefined
как подправить?

devote 03.02.2013 17:16

вы пытаетесь итерировать объект а не массив, ибо json_encode возвращает объект JSON а не массив JavaScript

KupueIIIKo 03.02.2013 17:18

devote,
var category = new Object();

тоже не помогает

devote 03.02.2013 17:21

Цитата:

Сообщение от KupueIIIKo
тоже не помогает

и не поможет, кто вам сказал что объявление переменной нужного типа, вдруг PHP вернет в том что вы описали в JS

Писать надо так:
var category = <?echo category_get();?>;

for (var key in category) {
    console.log(key + "=" + category[key].name);
}

KupueIIIKo 03.02.2013 18:54

devote,
ну пишу
var input_li = $("<li>",{
		text: category[key].name
	});
	$("#menu_tabs ul").append(input_li);

реакции ноль!

KupueIIIKo 03.02.2013 21:46

Есть другие варианты решений? Чтоб я его переменную мог юзать полноценно!

danik.js 03.02.2013 23:01

А что дает эта строка <?echo category_get();?> после отработки php-сценария?

danik.js 03.02.2013 23:04

Цитата:

Сообщение от KupueIIIKo
Есть другие варианты решений? Чтоб я его переменную мог юзать полноценно!

Все вам варианты подавай )) По вашему все должны гадать что же у вас там происходит и давать варианты для 100500 случаев ???

KupueIIIKo 04.02.2013 08:44

Я выдергиваю с базы данных таблицу с полями id и name) Ассоциативный массив)

KupueIIIKo 04.02.2013 08:45

function category_get(){
	global $mc;
	global $ms;
	if(!$category_get_json = $mc->get('category')){
		try {
			$category_get_sql = "SELECT * FROM category";
			$category_get_sth = $ms->prepare($category_get_sql);
			$category_get_sth->execute();
			$category_get_res=$category_get_sth->fetchall((PDO::FETCH_ASSOC));
		}catch (Exception $e) {echo $e->getMessage();}	
		$category_get_json = json_encode($category_get_res,JSON_UNESCAPED_UNICODE);
		$mc->set('category',$category_get_json , false, 60);
	}
	return $category_get_json;
}

KupueIIIKo 04.02.2013 09:16

Короче принял данные через ajax)

KupueIIIKo 04.02.2013 09:35

Хотя нефига! Блин Вот выдрал скрипт с другого своег проекта! Все отлично не ошибок нечего! А тут ругается и ппц!
TypeError: category_array[i] is undefined

KupueIIIKo 04.02.2013 09:37

При этом скрипт выполняется

danik.js 04.02.2013 09:54

KupueIIIKo, в JavaScript нет ассоциативных массивов. Еще раз спрашиваю: что конкретно продуцирует строка <?echo category_get();?> ? Тоесть что видим в Ctrl+U ?

danik.js 04.02.2013 09:56

for (var i=0;i<=category.length-1;i++)
Индекс последнего элемента равен length-1

KupueIIIKo 04.02.2013 10:11

danik.js,
Едрить...... Точно а я 12 часов сижу туплю!


Часовой пояс GMT +3, время: 08:40.