Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Передача массивов из php в js (https://javascript.ru/forum/dom-window/69485-peredacha-massivov-iz-php-v-js.html)

Shuryga 27.06.2017 10:31

Передача массивов из php в js
 
Всем доброго времени суток. Подскажите пожалуйста как передать несколько массивов из php файла в js

Один массив я смог передать следующим образом.

К примеру файл cartnetshop.php

$strings = array('blabla', 'bebebe', 'hahaha');
echo json_encode( $strings );


в js

$('.button').keyup(function(){
		$.post('/cartnetshop.php',,
			function(data)
				{
				var result = jQuery.parseJSON( data );
				$('.zag-oform-zakaz').html(result[0]);
				}
			);
	});


Все упрощенно сугуббо для примера.

Задача объявить два массива к примеру

$strings = array('blabla', 'bebebe', 'hahaha');
$numb= array('12', '43', '23');


И получить их в js и бращаться к каждому массиву по имени к примеру

$('.block-one').html(strings[0]);
$('.block-two').html(numb[0]);


Всем заранее огромное спасибо.

laimas 27.06.2017 10:38

Это не проблемы JS.

json_encode(array($strings, $numb));

Shuryga 27.06.2017 10:44

И при получении называть массивы и их обрабатывать. к примеру

var result = jQuery.parseJSON( data );
var strings = result[0];
var numb = result[1];

$('.zag-oform-zakaz').html(numb[0]);


Я правильно понял?

Спасибо большое, но есть ли возможность передавать также название массивов?
Это не обязательно но для дальнейшего удобства обработки данных.

laimas 27.06.2017 10:50

Цитата:

Сообщение от Shuryga
есть ли возможность передавать также название массивов?

У массивов нет названий ни в РНР, ни в JS. $strings и $numb, это не названия, а переменные под которыми объявлены массивы. Вам чего надо, чтобы вместо var strings = result[0]; получать var strings = result.strings?

Shuryga 27.06.2017 11:00

Все я вас понял. Натолкнули на мысль.

json_encode(array('strings' => $strings, 'numb' => $numb));


и тогда я получу

var result = jQuery.parseJSON( data );
var strings = result['strings'];

Я ведь правильно все понимаю

Shuryga 27.06.2017 11:01

У массивов нет названий ни в РНР, ни в JS. $strings и $numb, это не названия, а переменные под которыми объявлены массивы.


Тут вы правы. Я некоректно выразился. Извиняюсь за свою глупость.

Shuryga 27.06.2017 11:10

К сожалению мой код не работает кончоль выдает ошибку

JSON.parse: unexpected character at line 1 column 1 of the JSON data

Что я делаю не так?

laimas 27.06.2017 11:26

Цитата:

Сообщение от Shuryga
var strings = result['strings'];

В JS нет ассоциативных массивов, есть объекты, и в данном случае ключи strings и numb массива РНР будет на клиенте свойствами объекта result. Можно к ним обращаться как result['strings'], но можно проще result.strings.

Цитата:

Сообщение от Shuryga
SON.parse: unexpected character at line 1 column 1 of the JSON data

Некорректный JSON. Это может быть следствием ошибки на сервере (ее вывода в браузер), выводом в браузер чего либо до или после echo json_encode(array('strings' => $strings, 'numb' => $numb)).

Shuryga 27.06.2017 12:05

Странно. Ведь я нечего не менял в файле кроме того что заменил

json_encode(array($strings, $numb));

на

json_encode(array('strings' => $strings, 'numb' => $numb));

laimas 27.06.2017 12:07

Цитата:

Сообщение от Shuryga
Странно.

Ничего странного, открывайте отладчик и смотрите в нем.


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