Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с использованием массива / 25 сообщений из 32, страница 1 из 2
04.10.2004, 10:24
    #32721666
JohnDan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием массива
Проблема::: есть массив, я его заполняю на стороне сервера из базы, мне нужно, чтоб этот массив был доступен в javascript, проблема с пересылкой. Я думаю так, надо на стороне клиента, перебрать серверный массив, создать клиентский, потом использовать его, верно??? Если так то подскажите синтаксис этого, и сам вызов функции java и как передавать, спасибо. Или где почитать, полазил, видел похожие проблемы, но ничего конкретного.
...
Рейтинг: 0 / 0
04.10.2004, 10:36
    #32721690
JohnDan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием массива
Подробнее: Есть 10 картинок, есть двумерный массив mas[][] размерностью, 10х10, заполненный php из базы mysql, содержащий параметры 10 картинок. Есть таблица, из десяти строчек. При наведении на картинку, должна вызываться некая функция func() (в качестве параметра, передаю id картинки) в которой я меняю содержимое таблицы с помощью innerText, без перезагрузки. Проблема в передаче данных серверного массива mass в клиентскую функцию, а также синтаксис самой передачи и формирования клиентского массива. Или ход мыслей неправильный??? Подскажите, пожалуйста.
...
Рейтинг: 0 / 0
04.10.2004, 23:20
    #32723060
SOMNAMBULA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием массива
Может так попробовать, если я правильно понял задачу (это на стороне сервера, когда страница формируется):

Код: plaintext
1.
2.
3.
4.
<script language="JavaScript">
...
var mas[] = {<%=getArrayFillingString()%>};
...
</script>

Метод getArrayFillingString() и будет подставлять в контент страницы необходимые данные для массива, т.е. например, вернёт строку
Код: plaintext
'"value1", "value2", "value3", "value4", "value5"'

После формирования страницы на сервере в браузере будет получено что-то вроде:

Код: plaintext
1.
2.
3.
4.
<script language="JavaScript">
...
var mas[] = {"value1", "value2", "value3", "value4", "value5"};
...
</script>

На JSP, наверное, я так бы сделал... (на 100% не уверен, что работать будет, сам не пробовал)

С PHP незнаком вообще, но наверняка там такое-же можно реализовать.
...
Рейтинг: 0 / 0
06.10.2004, 03:38
    #32725051
JohnDan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием массива
Жду ещё вариантов, спасибо
...
Рейтинг: 0 / 0
06.10.2004, 20:39
    #32726918
z
z
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием массива
JohnDanЖду ещё вариантов, спасибо

ну ты ленивый
...
Рейтинг: 0 / 0
07.10.2004, 12:08
    #32727663
JohnDan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием массива
теперь новый вопрос:::
<SCRIPT LANGUAGE="JavaScript">
var myArray = new Array(new Array())
myArray[0]['id'] = "<?echo $mas[0]['id']?>"
myArray[1]['tip'] = "<?echo $mas[1]['tip']?>"
window.alert(myArray[0]['id'])
</SCRIPT>

не выскакивает alert, если делаю одномерный массив, т.е.

var myArray = new Array()
myArray['id'] = "<?echo $mas[0]['id']?>"
myArray['tip'] = "<?echo $mas[1]['tip']?>"
window.alert(myArray['id'])

всё нормально, в чём проблема??? не правильно многомерный массив объявил???
...
Рейтинг: 0 / 0
07.10.2004, 13:32
    #32727982
z
z
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием массива
напиши что генерится после выполнения скрипта.
...
Рейтинг: 0 / 0
07.10.2004, 15:29
    #32728189
z
z
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием массива
включи еще опцию в баузере показывать ошибки на странице.

у тебя там нет ";"(точки с запятой) в конце каждой строки
...
Рейтинг: 0 / 0
07.10.2004, 16:14
    #32728335
SOMNAMBULA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием массива
zу тебя там нет ";"(точки с запятой) в конце каждой строки

...вроде как не обязательно

На сколько я помню в JavaScript не поддерживаются многомерные массивы в привычном смысле этого "слова".
Сомневаюсь так же на счёт правомочности записи:

Код: plaintext
var mas = new Array(new Array());

Как вариант можно предложить следующий фрагмент серверной страницы:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<script language="JavaScript">
...
var a = new Array();
...
<%
int i;
int size = getArraySize();
for(i = 0; i < size; i++) 
{
%>
	a[<%=i%>] = new initArrayItem(<%=getParam1(i)%>, <%=getParam2(i)%>, <%=getParam3(i)%>);
<%
}
%>
...
function initArrayItem(param1, param2, param3) {
	this.param1 = param1;
	this.param2 = param2;
	this.param2 = param2;
}
...

</script>

Одноко имеются недостатки, например, я бы не стал для больших массивов так делать,
т.к. это бы довольно сильно может увеличить размер страницы. Да и вообще, зависит от задачи...

Вот тебе ещё примерчик, может поможет разобраться (рабочий):

Код: plaintext
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.
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>

<script language="JavaScript">
<!--
function initArrayItem(param1, param2, param3)
{
	this.param1 = param1;
	this.param2 = param2;
	this.param3 = param3;
}

function checkArray()
{
	var m = new Array();
	m[0] = new initArrayItem(1, 2, 'бе');
	m[1] = new initArrayItem(4, 5, 'бе-бе');
	m[2] = new initArrayItem(7, 8, 'бе-бе-бе');
	
	var s;
	for(i = 0; i < 3; i++)
	{
		s = m[i].param1 + ', ' + m[i].param2 + ', ' + m[i].param3;
		alert(s);
	}
}
-->
</script>
<body bgcolor="#FFFFFF" text="#000000" onLoad="checkArray()">

</body>
</html>
...
Рейтинг: 0 / 0
08.10.2004, 11:06
    #32729402
JohnDan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием массива
zвключи еще опцию в баузере показывать ошибки на странице.

у тебя там нет ";"(точки с запятой) в конце каждой строки

точка с запятой не вожна.

Вот код браузера:
<SCRIPT LANGUAGE="JavaScript">
var myArray = new Array(new Array())
myArray['0']['id'] = "значение1"
myArray['1']['name'] = "значение2"
window.alert(myArray['0']['id'])
</SCRIPT>

Ошибка:
"myArray.1" - есть null или не является объектом
...
Рейтинг: 0 / 0
08.10.2004, 14:46
    #32730142
z
z
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием массива
<html>
<head>
<SCRIPT LANGUAGE="JavaScript">
var myArray = new Array(new Array())
myArray['0']['id'] = "значение1"
myArray['1']['name'] = "значение2"
function al(){
window.alert(myArray['0']['id'])
}
</SCRIPT>
</head>
<body>
<input type=button value='Alert!!' onClick='al()'>
</body>
</html>

все отлично работает!!!!
...
Рейтинг: 0 / 0
13.10.2004, 07:06
    #32735248
JohnDan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием массива
почему:::
<html>
<head>
<SCRIPT LANGUAGE="JavaScript">
var myArray = new Array(new Array())
myArray['0']['id'] = "значение1"
myArray['1']['name'] = "значение2"
function al(){
window.alert(myArray['0']['id'])
}
</SCRIPT>
</head>
<body>
<input type=button value='Alert!!' onClick='al()'>
</body>
</html>

работает, а:::

<html>
<head>
<SCRIPT LANGUAGE="JavaScript">
var myArray = new Array(new Array())
myArray['0']['id'] = "значение1"
myArray['1']['name'] = "значение2"
window.alert(myArray['0']['id'])
</SCRIPT>
</head>
</html>

нехочет???
...
Рейтинг: 0 / 0
13.10.2004, 10:42
    #32735560
z
z
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием массива
http://pyramidin.narod.ru/jscript/clientguide13/default.htm
...
Рейтинг: 0 / 0
13.10.2004, 11:03
    #32735623
JohnDan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием массива
с предидущим уже всё ясно, новая проблема:::

for(i = 0; i < <?echo $number?>; i++)
{
myArray = new Array();
<?$myrow = mysql_fetch_array($result);?>;
myArray['name'] = '<?echo $myrow['name']?>';
myArray['id'] = '<?echo $myrow['id']?>';
}
document.writeln(myArray[1]['name']);

почему то не товыдаёт, как будто mysql_fetch_array выполнилось всего 1 раз, цикл крутиться необходимое кол-во раз, проверял, в чём проблема?
...
Рейтинг: 0 / 0
13.10.2004, 15:40
    #32736584
z
z
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием массива
JohnDanс предидущим уже всё ясно, новая проблема:::

for(i = 0; i < <?echo $number?>; i++)
{
myArray = new Array();
<?$myrow = mysql_fetch_array($result);?>;
myArray['name'] = '<?echo $myrow['name']?>';
myArray['id'] = '<?echo $myrow['id']?>';
}
document.writeln(myArray[1]['name']);

почему то не товыдаёт, как будто mysql_fetch_array выполнилось всего 1 раз, цикл крутиться необходимое кол-во раз, проверял, в чём проблема?


у тебя идут вперемешку perl/php и javascript...

perl/php выполняется на серверной стороне и генерит html(в твоем случае), в котором есть javascript. javascript будет уже выполняться на клиентской стороне. если это поймешь - все вопросы отпадут
...
Рейтинг: 0 / 0
14.10.2004, 04:33
    #32737344
JohnDan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием массива
z
у тебя идут вперемешку perl/php и javascript...

perl/php выполняется на серверной стороне и генерит html(в твоем случае), в котором есть javascript. javascript будет уже выполняться на клиентской стороне. если это поймешь - все вопросы отпадут

Perl - а вообще нет. Я понимаю что где выполняется. Мне на стороне клиента, надо получить массив, содержащий в себе значения массива, сформированного из базы - вот цель, с одномерным проблем нет:

var myArray = new Array();

myArray[0] = '<?echo $myrow[0]?>';
myArray[1] = '<?echo $myrow[1]?>';

но у меня, например, 1000 записей, я же не буду так писать 1000 строчек, я завожу массив:

or(i = 0; i < 1000; i++)
{
myArray = '<?echo $myrow?>';
}

вот тут то и косяк! Синтаксис какой должен быть в <?echo $myrow?> чтоб по индексу i обращаться к массиву php?
...
Рейтинг: 0 / 0
14.10.2004, 11:19
    #32737799
SOMNAMBULA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием массива
JohnDanвот тут то и косяк! Синтаксис какой должен быть в <?echo $myrow ?> чтоб по индексу i обращаться к массиву php?

может, тебе на другой форум надо? ...

Тебе предложен способ переноса серверного массива на клиент. Во время "работы" твоей странички в браузере работать ты будешь с "клиентским" массивом работать, а не с "серверным". И тогда уже пофиг где и каким образом сгенерен массив, т.к. ты его получаешь в контенте страницы (в самой странице) в виде, удобном для обработки из JavaScript. Если тебе нужно передать массив в 1000 элементов, то, это не самый подходящий способ, т.к. если массив сложен, то сильно увеличится размер передаваемых по сети данных (размер страницы). Хотя, если ты собрался это средствами JavaScript решить, то это, пожалуй, единственный способ (на мой взгляд).
Такми образом, ты серверными средствами (PHP) генеришь код (программу), которая будет выполнятся на клиенте (браузере) и встраиваешь его в страницу. Чего тут не понятного? Ты вроде бы и говоришь, что понятно, но на деле...

Далее: а для чего такая свистопляска:
JohnDan
Код: plaintext
1.
2.
3.
4.
5.
6.
for(i = 0; i < <?echo $number?>; i++)
{ 
myArray = new Array();
<?$myrow = mysql_fetch_array($result);?>;
myArray['name'] = '<?echo $myrow['name']?>'; 
myArray['id'] = '<?echo $myrow['id']?>'; 
}


можно пояснить? На самом деле, чего ты этим хочешь добиться?
...
Рейтинг: 0 / 0
14.10.2004, 11:34
    #32737849
JohnDan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием массива
Хочу получить массив клиентский со значениями серверными, взятыми из базы
...
Рейтинг: 0 / 0
14.10.2004, 11:42
    #32737871
z
z
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием массива
JohnDanХочу получить массив клиентский со значениями серверными, взятыми из базы

у тебя цикл формируется на клиентской стороне и НА СЕРВЕРНОЙ НЕ(!!!) выполняется. и все что написано в <? ?> выполняется на сервере один раз, если там нет циклов и т.д.(в твоем случае нет).
если хочешь что-то делать в цикле
<? for($i=0; $i<10; $i++){
print('s[$i]='.$mas[$i]);
}?>

и писец...
...
Рейтинг: 0 / 0
14.10.2004, 11:43
    #32737879
JohnDan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием массива
проверим
...
Рейтинг: 0 / 0
14.10.2004, 11:44
    #32737882
SOMNAMBULA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием массива
во-во... цикл на клиенте то зачем?
...
Рейтинг: 0 / 0
14.10.2004, 11:45
    #32737893
JohnDan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием массива
А я смогу к массиву s[$i] обратиться из JS?? и какая разница? массив mas[] уже есть, и я создаю есчё один s[] аналогичный, или я что-то туплю
...
Рейтинг: 0 / 0
14.10.2004, 11:53
    #32737921
z
z
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием массива
JohnDanА я смогу к массиву s[$i] обратиться из JS?? и какая разница? массив mas[] уже есть, и я создаю есчё один s[] аналогичный, или я что-то туплю

у меня уже слов не хватает...
если ты не прикалываешься, то это тяжелый случай....

на клиентской части он будет s[0]...s[9]

Совет. Подумай что у тебя должно быть на клиентской стороне. напиши это в
print(). если что-то можно сделать циклом(на серверной стороне) сделай это
...
Рейтинг: 0 / 0
14.10.2004, 11:56
    #32737937
JohnDan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием массива
Большое спасибо, вопросов ПОКА не имею
...
Рейтинг: 0 / 0
14.10.2004, 12:07
    #32737973
JohnDan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с использованием массива
<SCRIPT LANGUAGE="JavaScript">
<?
$query = "SELECT * FROM baza";
$result = mysql_query($query);
$number = mysql_num_rows($result);
$myrow = mysql_fetch_array($result);
print('s[0]='.$myrow['id']);
print('s[1]='.$myrow['name']);
?>
</SCRIPT>
Броузер выводит ошибку "Предполагается наличие ";"", ставлю ";" - без результата
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с использованием массива / 25 сообщений из 32, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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