powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / дерево с ajax подзагрузкой
7 сообщений из 7, страница 1 из 1
дерево с ajax подзагрузкой
    #38134967
pek1992
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мне необходимо переделать вот этот пример http://javascript.ru/ui/ajaxtree

я пытаюсь динамически заполнять дерево из базы. Файл data.php выглядит так
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<?php
$type = $GET_["type"];
$node = array();
....
$result = mysql_query($query);
	//Обработка и вывод результатов SQL-запроса
	while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){
//usleep(500000);
$id = $row["STR_ID"];
$title = $row["STR_DES_TEXT"];
$folder = $row["DESCENDANTS"];

	$node[] = "{ id: $id, type: $type, title: '$title', isFolder: $folder }";
}
echo '['.implode(',',$node).']';


Перепробовал кучу вариантов, прочел и попробовал всё из коментариев к статье...
вот js:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
function tree(id, url) {
	var element = document.getElementById(id)

	function hasClass(elem, className) {
		return new RegExp("(^|\\s)"+className+"(\\s|$)").test(elem.className)
	}

	function toggleNode(node) {
		var newClass = hasClass(node, 'ExpandOpen') ? 'ExpandClosed' : 'ExpandOpen'
		var re =  /(^|\s)(ExpandOpen|ExpandClosed)(\s|$)/
		node.className = node.className.replace(re, '$1'+newClass+'$3')
	}

	function load(node) {

		function showLoading(on) {
			var expand = node.getElementsByTagName('DIV')[0]
			expand.className = on ? 'ExpandLoading' : 'Expand'
		}


		function onSuccess(data) {
			if (!data.errcode) {
				onLoaded(data)
				showLoading(false)
			} else {
				showLoading(false)
				onLoadError(data)
			}
		}


		function onAjaxError(xhr, status){
			showLoading(false)
			var errinfo = { errcode: status }
			if (xhr.status != 200) {
				errinfo.message = xhr.statusText
			} else {
				errinfo.message = 'Error Data11'
			}
			onLoadError(errinfo)
		}


		function onLoaded(data) {
    for(var i=0; i<data.length; i++) {
    var child = data[i]
                
    var li = document.createElement('LI')
    li.className = "Node Expand" + (child.isFolder ? 'Closed' : 'Leaf')
    if (i == data.length-1) li.className += ' IsLast'

    li.id = child.id

    li.innerHTML = '<div class="Expand"></div><div class="Content">'+child.title+'</div>'
    if (child.isFolder) {
    li.innerHTML += '<ul class="Container"></ul>'
    }
 node.getElementsByTagName('UL')[0].appendChild(li)
                 
  }
 node.isLoaded = true
 toggleNode(node)
}

		function onLoadError(error) {
			var msg = "Error"+error.errcode
			if (error.message) msg = msg + ' :'+error.message
			alert(msg)
		}


		showLoading(true)

		$.ajax({

            url: url + '?id=' + node.id + '&type=' + node.type,// вот в этом месте id передаётся в data.php. Должно бы, точнее.			
			data: node.id,
			dataType: "json",
			success: onSuccess,
			error: onAjaxError,
			cache: false
		})
	}

	element.onclick = function(event) {
		event = event || window.event
		var clickedElem = event.target || event.srcElement

		if (!hasClass(clickedElem, 'Expand')) {
			return 
		}

		
		var node = clickedElem.parentNode
		if (hasClass(node, 'ExpandLeaf')) {
			return 
		}

		if (node.isLoaded || node.getElementsByTagName('LI').length) {
			toggleNode(node)
			return
		}

		if (node.getElementsByTagName('LI').length) {
			toggleNode(node)
			return
		}

		load(node)

	}

}



Выдает ошибку "Error Data11".

Если напрямую обращаюсь к data.php с параметрами отвечает вроде правильно..

[{ id: 10102, type: , title: 'Двигатель', isFolder: 1 },{ id: 10104, type: , title: 'Система выпуска', isFolder: 1 },{ id: 10105, type: , title: 'фильтр', isFolder: 1 },{ id: 10106, type: , title: 'тормозная система', isFolder: 1 },{ id: 10107, type: , title: 'Система охлаждения', isFolder: 1 },{ id: 10108, type: , title: 'Система зажигания / накаливания', isFolder: 1 },{ id: 10110, type: , title: 'Электрика', isFolder: 1 },{ id: 10111, type: , title: 'Подвеска / амортизация', isFolder: 1 },{ id: 10112, type: , title: 'рулевое управления', isFolder: 1 },{ id: 10113, type: , title: 'Подвеска оси / система подвески / колеса', isFolder: 1 },{ id: 10114, type: , title: 'Привод колеса', isFolder: 1 },{ id: 10116, type: , title: 'Ременный привод', isFolder: 1 },{ id: 10118, type: , title: 'Система очистки окон', isFolder: 1 },{ id: 10119, type: , title: 'Детали для сервиса / ТО / ухода', isFolder: 1 },{ id: 10314, type: , title: 'система подачи топлива', isFolder: 1 },{ id: 10354, type: , title: 'Подготовка топливной смеси', isFolder: 1 }]

Помогите пожалуйста разобраться....
...
Рейтинг: 0 / 0
дерево с ajax подзагрузкой
    #38135006
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pek1992
Код: php
1.
url: url + '?id=' + node.id + '&type=' + node.type,// вот в этом месте id передаётся в data.php. Должно бы, точнее.	

....
Если напрямую обращаюсь к data.php с параметрами отвечает вроде правильно..Смотрите, что реально передается из яваскрипта в php и что возвращается в браузер. "Должно бы" и "вроде" тут как-то неуместно. Данные могут либо передаваться, либо нет. Либо правильные, либо с ошибкой. Для просмотра на стороне браузера можно использовать Firebug или другие аналогичные инструменты. На стороне сервера можно записать получаемые значения и значения переменных по ходу работы скрипта в файл. Хотя, есть варианты...
...
Рейтинг: 0 / 0
дерево с ajax подзагрузкой
    #38135056
pek1992
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle,

да, верно в url никаких параметров не передается, правильней будет сделать так
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
$.ajax({

            url: url,			
			data: "id=" + node.STR_ID + "type=" + node.type,
			dataType: "json",
			success: onSuccess,
			error: onAjaxError,
			cache: false
		})


но ошибка все равно осталась
...
Рейтинг: 0 / 0
дерево с ajax подзагрузкой
    #38135072
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pek1992в url никаких параметров не передаетсяВы хотите сказать, что node.STR_ID и node.type пусты при сборке строки для отправки на сервер? Если так, то ошибка в яваскрипте, вероятнее всего и Вам в другой форум.

PS: Что-то мне подсказывает, что в последнем, "более правильном" варианте добавлена еще одна ошибка, только другого плана.
...
Рейтинг: 0 / 0
дерево с ajax подзагрузкой
    #38135205
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleЧто-то мне подсказывает, что в последнем, "более правильном" варианте добавлена еще одна ошибка, только другого плана.именно.

pek1992
Код: javascript
1.
data: "id=" + node.STR_ID + "type=" + node.type,

пропал символ &
вообще, лучше делать так:
Код: javascript
1.
	data: { id: node.STR_ID, type: node.type },
...
Рейтинг: 0 / 0
дерево с ajax подзагрузкой
    #38135965
pek1992
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Яростный Меч,
Попробовал так, но ничего не передается(
зато передается какой то параметр, даже не знаю откуда он мог взяться
data.php?_=1359965021609&id=&type=
вот так выглядит ссылка
...
Рейтинг: 0 / 0
дерево с ajax подзагрузкой
    #38136202
pek1992
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
даже если напрямую параметры передаю, все равно ошибка вылетает
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
		$.ajax({

            url: url,			
			data: "id=10110&type=21886",
			dataType: "json",
			success: onSuccess,
			error: onAjaxError,
			cache: false
		})
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / дерево с ajax подзагрузкой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]