Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как из php файла передать данные в переменную javascript (https://javascript.ru/forum/misc/63812-kak-iz-php-fajjla-peredat-dannye-v-peremennuyu-javascript.html)

angelzzz 01.07.2016 10:01

Как из php файла передать данные в переменную javascript
 
Через API получаю данные от стороннего сервиса. Структура ответа:

[ { 
        ...     
        “Latitude”: “<Широта>”,
        “Longitude”:    “<Долгота>”,
        ...
} ]


С помощью php файла getdata.php прохожу по массиву и собираю все данные

foreach ($response as $item) {
    $a = "[".$item['Latitude'].",".$item['Longitude']."]," ;   
    $array = $array.$a ;
}

    $list= substr($array, 0, -1);
    echo json_encode($list);


Это список точек, который я хочу отобразить на карте с помощью Яндекс.Карты API.

var myMap = new ymaps.Map('map', {
...
    points = [
        [55.831903,37.411961], [55.763338,37.565466]
    ],
}


Как мне передать данные переменной $list в points?
Вопрос по корректности кода в php? Он вроде выводит верные данные, но нужно ли делать json_encode и можно ли заменить substr($array, 0, -1); на что-то внутри foreach?

Viral 01.07.2016 12:29

$array не должен быть строкой, похожей на массив, сделайте переменную полноценным массивом, в строку JSON ее превратит json_encode

angelzzz 01.07.2016 12:58

Можно пример как мне сделать массив из Latitude и Longitude в таком виде [55.831903,37.411961] ?

Viral 01.07.2016 13:02

например, так:
$array = [];
foreach ($response as $i){
	$arr = [$item['Latitude'],$item['Longitude']];
	array_push($array,$arr);
}
echo json_encode($array);

laimas 01.07.2016 13:04

foreach ($response as $item) в данном случае вообще некчемная операция. Если $response, это массив, вложения которого массивы хранящие значения координат, то вместо всего написанного достаточно json_encode($response).

angelzzz 01.07.2016 13:08

структура ответа больше:
[
{	
		“Id“:		“<Id>”,
		“OwnerId”:	”<Owner_id>”,
		“CitiId”:		“<Id города >”,
		“Number”:	”<номер >”,
		“Address”:	”<адрес >”,
		“Latitude”:	“<Широта>”,
		“Longitude”:	“<Долгота>”,
}
]

и еще более 20 полей. Можно тут обойтись без foreach ($response as $item) ?

laimas 01.07.2016 13:11

Цитата:

Сообщение от angelzzz
Можно тут обойтись без foreach ($response as $item) ?

Вы на свой код внимательно посмотрите, в нем нет никакого смысла, ибо вы пытаетесь в нем создать "самопальный" json_encode, а зачем?

angelzzz 01.07.2016 13:13

Ошибка syntax error, unexpected '[' в строке
$array = [];

Viral 01.07.2016 13:15

Цитата:

Сообщение от angelzzz (Сообщение 420975)
Ошибка syntax error, unexpected '[' в строке
$array = [];

удалите денвер и поставьте вебсервер с пыхой 5.4+

Viral 01.07.2016 13:16

laimas,
ну не хочет человек передавать 20 лишних параметров клиенту)


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