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;
}


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