powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с использованием массива
32 сообщений из 32, показаны все 2 страниц
Проблема с использованием массива
    #32721666
JohnDan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема::: есть массив, я его заполняю на стороне сервера из базы, мне нужно, чтоб этот массив был доступен в javascript, проблема с пересылкой. Я думаю так, надо на стороне клиента, перебрать серверный массив, создать клиентский, потом использовать его, верно??? Если так то подскажите синтаксис этого, и сам вызов функции java и как передавать, спасибо. Или где почитать, полазил, видел похожие проблемы, но ничего конкретного.
...
Рейтинг: 0 / 0
Проблема с использованием массива
    #32721690
JohnDan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подробнее: Есть 10 картинок, есть двумерный массив mas[][] размерностью, 10х10, заполненный php из базы mysql, содержащий параметры 10 картинок. Есть таблица, из десяти строчек. При наведении на картинку, должна вызываться некая функция func() (в качестве параметра, передаю id картинки) в которой я меняю содержимое таблицы с помощью innerText, без перезагрузки. Проблема в передаче данных серверного массива mass в клиентскую функцию, а также синтаксис самой передачи и формирования клиентского массива. Или ход мыслей неправильный??? Подскажите, пожалуйста.
...
Рейтинг: 0 / 0
Проблема с использованием массива
    #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
Проблема с использованием массива
    #32725051
JohnDan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Жду ещё вариантов, спасибо
...
Рейтинг: 0 / 0
Проблема с использованием массива
    #32726918
z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
z
Гость
JohnDanЖду ещё вариантов, спасибо

ну ты ленивый
...
Рейтинг: 0 / 0
Проблема с использованием массива
    #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
Проблема с использованием массива
    #32727982
z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
z
Гость
напиши что генерится после выполнения скрипта.
...
Рейтинг: 0 / 0
Проблема с использованием массива
    #32728189
z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
z
Гость
включи еще опцию в баузере показывать ошибки на странице.

у тебя там нет ";"(точки с запятой) в конце каждой строки
...
Рейтинг: 0 / 0
Проблема с использованием массива
    #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
Проблема с использованием массива
    #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
Проблема с использованием массива
    #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
Проблема с использованием массива
    #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
Проблема с использованием массива
    #32735560
z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
z
Гость
http://pyramidin.narod.ru/jscript/clientguide13/default.htm
...
Рейтинг: 0 / 0
Проблема с использованием массива
    #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
Проблема с использованием массива
    #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
Проблема с использованием массива
    #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
Проблема с использованием массива
    #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
Проблема с использованием массива
    #32737849
JohnDan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу получить массив клиентский со значениями серверными, взятыми из базы
...
Рейтинг: 0 / 0
Проблема с использованием массива
    #32737871
z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
z
Гость
JohnDanХочу получить массив клиентский со значениями серверными, взятыми из базы

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

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

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

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

Совет. Подумай что у тебя должно быть на клиентской стороне. напиши это в
print(). если что-то можно сделать циклом(на серверной стороне) сделай это
...
Рейтинг: 0 / 0
Проблема с использованием массива
    #32737937
JohnDan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо, вопросов ПОКА не имею
...
Рейтинг: 0 / 0
Проблема с использованием массива
    #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
Проблема с использованием массива
    #32737993
Фотография А.Гpacoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Проблема с использованием массива
    #32738040
z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
z
Гость
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>
Броузер выводит ошибку "Предполагается наличие ";"", ставлю ";" - без результата


само собой он это ищет...
у тебя получается нечто вроде

s[0]=34234s[1]=343454

ты смотри что генерится в html...если не совсем то, сделай чтоб то выводилось... в твоем случае print('s[0]='.$myrow['id'] .';' );
...
Рейтинг: 0 / 0
Проблема с использованием массива
    #32738074
Фотография А.Гpacoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гы. прашу пращенийа.
...
Рейтинг: 0 / 0
Проблема с использованием массива
    #32739509
JohnDan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
z
само собой он это ищет...
у тебя получается нечто вроде

s[0]=34234s[1]=343454

ты смотри что генерится в html...если не совсем то, сделай чтоб то выводилось... в твоем случае print('s[0]='.$myrow['id'] .';' );

Да, генерит то, что ты и написал, и как ты я делал (не совсем дурак) результат такой же!!!
...
Рейтинг: 0 / 0
Проблема с использованием массива
    #32739534
JohnDan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всё, спасибо, разобрался:
var s = new Array();
не объявил!
...
Рейтинг: 0 / 0
Проблема с использованием массива
    #32739535
JohnDan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
новая фишка:
<SCRIPT LANGUAGE="JavaScript">
var s = new Array();
<?
$query = "SELECT * FROM `enciklop`";
$result = mysql_query($query);
$number = mysql_num_rows($result);
$myrow = mysql_fetch_array($result);
echo "s[1]=".$myrow['id'].";";
echo "s[1]=".$myrow['tip'].";";
?>
</SCRIPT>
работает, $myrow['tip'], $myrow['id'] - числа

<SCRIPT LANGUAGE="JavaScript">
var s = new Array();
<?
$query = "SELECT * FROM `enciklop`";
$result = mysql_query($query);
$number = mysql_num_rows($result);
$myrow = mysql_fetch_array($result);
echo "s[1]=".$myrow['id'].";";
echo "s[1]=".$myrow['name'].";";
?>
не работает, $myrow['name'] - строка, с пробелами, почему ругается нга тип? ошибка таже в браузере: "Предполагается наличие ";""
...
Рейтинг: 0 / 0
Проблема с использованием массива
    #32739536
JohnDan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
индексы 0, 1 в массиве s[] - перепутал
...
Рейтинг: 0 / 0
32 сообщений из 32, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с использованием массива
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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