0 / 0 / 0
Регистрация: 20.09.2015
Сообщений: 40

Массив после json_decode передаю, а получить в js не могу

23.08.2016, 10:41. Показов 2694. Ответов 43

Студворк — интернет-сервис помощи студентам
Такой массив на выходе (для наглядности вывел при помощи print_r). это чтобы на карты Яндекс вывести массив меток

JavaScript
1
Array ( [0] => Array ( [name] => Газовая АЗС в селе Алтайское [meta_keyword] => Газовая АЗС в селе Алтайское [model] => Круглый год [geolocation] => 51.943358, 85.3447 [category_id] => 66 ) [1] => Array ( [name] => Газовая заправка в Благовещенке [meta_keyword] => АГЗС Благовещенка [model] => Круглый год [geolocation] => 52.819953287307534, 79.88247999999996 [category_id] => 66 )
такой код 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
window.myObjects = ymaps.geoQuery({
    function addMarkers ({geolocation, name, model, meta_keyword}) 
            {var markers
            for(var i=0; i < markers.length; i++) { 
        type: "FeatureCollection",
        features: [
                {
                type: 'Feature',
                geometry: {
                    type: 'Point',
                    coordinates: [markers[i].geolocation]
                },
                options: {
                    preset: 'islands#darkBlueDotIconWithCaption',
                BalloonContent: 'markers[i].name'
                },
                properties: {
                iconCaption: 'markers[i].name',
                balloonContentHeader: 'markers[i].model',
                balloonContentBody: 'markers[i].meta_keyword'
                }
            }
            }
            }
            }).addToMap(myMap);
ооооочень долго не могу понять вот эту часть(здесь не работает):

function addMarkers ({geolocation, name, model, meta_keyword})
{var markers
for(var i=0; i <= markers.length; i++)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.08.2016, 10:41
Ответы с готовыми решениями:

json_decode - получить поле из JSON
Как отсюда достать &quot;captcha_sid&quot; ( ну значение содержащее там: &quot;923770130313&quot; ). ...

Возможно ли получить идентификатор массива, который я передаю в функцию?
Приветствую! Возможно ли получить идентификатор массива, который я передаю в функцию? Массив объявлен в main(), инициализируется в...

json_decode - вывести весь массив из JSON
Как достать всех юзеров а не перебирать users, users и тд? {&quot;response&quot;:{&quot;count&quot;:1868,&quot;users&quot;:}}

43
0 / 0 / 0
Регистрация: 20.09.2015
Сообщений: 40
26.08.2016, 15:57  [ТС]
Студворк — интернет-сервис помощи студентам
вывести через echo или print_r не проблема, но где-то неправильно составлен js скрипт вот не знаю...
0
Эксперт С++
516 / 421 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
26.08.2016, 15:59
Причем здесь JS если ошибка в PHP функции.
0
0 / 0 / 0
Регистрация: 20.09.2015
Сообщений: 40
26.08.2016, 18:30  [ТС]
Согласен, я неправильно выразился. но мы продвинулись - спасибо Вам !

Добавлено через 2 часа 11 минут
я тут малость повысил уровень абстракции изучил пример и ву а ля!
Данные передались в скрипт.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$points = array ();
$bd_agzs = mysql_query("SELECT opd.name, opd.meta_keyword, op.model, op.geolocation, optc.category_id
FROM  oc_product_to_category optc, oc_product op , oc_product_description  opd
WHERE optc.category_id  = '66'
AND   op.product_id     = optc.product_id
AND   opd.product_id    = op.product_id
AND   opd.language_id   = 1")or die(mysql_error());
if(mysql_num_rows($bd_agzs)>0)
{
while ($mar = mysql_fetch_array($bd_agzs))
{
$json =  array("geolocation"=>$mar["geolocation"], "name"=>$mar["name"], "model"=>$mar["model"], "meta_keyword"=>$mar["meta_keyword"]);
$markers[] = $json;
}
 
}
$points = array("markers"=>$markers);
$arr_Encoded = json_encode($points);
?>
 
window.myobj = <?=$arr_Encoded?>;
в исходном коде видно, что json передал данные на сторону клиента.
view-source:http://comfort.xn--22-6kc1cvaa... nt/voucher

Но дальше я опять запутался... Маркеры все равно не выводятся.
0
Эксперт С++
516 / 421 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
26.08.2016, 18:38
Потому что как я понимаю это надо делать внутри init()
0
0 / 0 / 0
Регистрация: 20.09.2015
Сообщений: 40
26.08.2016, 19:21  [ТС]
А подробнее? Просто ни разу подобных примеров не видел...намекните если не сложно.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
27.08.2016, 10:07
В marker-layout.php впишите:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
    $resource = mysql_query("SELECT opd.name, opd.meta_keyword, op.model, op.geolocation, optc.category_id
    FROM  oc_product_to_category optc, oc_product op , oc_product_description  opd
    WHERE optc.category_id  = '66'
    AND   op.product_id     = optc.product_id
    AND   opd.product_id    = op.product_id
    AND   opd.language_id   = 1");
 
    $data = [];
 
    while($row = mysql_fetch_assoc($resource))
        $data[] = $row;
 
    echo json_encode($data);
JS-код так напишите:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$.getJSON("marker-layout.php", function(data) {
    for (var i = 0; i < data.length; i++) {
        ymaps.geoQuery({
            type: "FeatureCollection",
            features: [{
                type: 'Feature',
                geometry: {
                    type: 'Point',
                    coordinates: data[i].geolocation.split(/\s*,\s*/);
                },
                options: {
                    preset: 'islands#darkBlueDotIconWithCaption'
                },
                properties: {
                    iconCaption: data[i].name,
                    balloonContentHeader: data[i].model,
                    balloonContentBody: data[i].meta_keyword
                }
            }]
        }).addToMap(myMap);
    }
});
И скажите, что будет.
0
0 / 0 / 0
Регистрация: 20.09.2015
Сообщений: 40
27.08.2016, 13:20  [ТС]
код прерывается где-то. убрал вообще все лишнее, в PHP только require ("bd.php"); и Ваш код.
в js только инициализация карты и приведенный код - это в исходном коде видно

Добавлено через 5 минут
если сделать вывод кода PHP на страницу
<?php include ("marker-layout.php"); ?>
то код прерывается.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
27.08.2016, 13:27
Включите вывод всех ошибок, чтобы увидеть, почему прерывается. Добавьте в начало скрипта:
PHP
1
2
ini_set('display_errors', 1);
error_reporting(E_ALL);
0
0 / 0 / 0
Регистрация: 20.09.2015
Сообщений: 40
27.08.2016, 14:18  [ТС]
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
require ("bd.php");
 
$resource = mysql_query("SELECT opd.name, opd.meta_keyword, op.model, op.geolocation, optc.category_id
    FROM  oc_product_to_category optc, oc_product op , oc_product_description  opd
    WHERE optc.category_id  = '66'
    AND   op.product_id     = optc.product_id
    AND   opd.product_id    = op.product_id
    AND   opd.language_id   = 1");
 
    $data = [];
 
    while($row = mysql_fetch_assoc($resource))
        $data[] = $row;
 
    echo json_encode($data);
Ошибки не показывает...
Так не бывает же
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
27.08.2016, 14:38
А что выводит именно этот код в том виде, в каком он сейчас?
0
0 / 0 / 0
Регистрация: 20.09.2015
Сообщений: 40
27.08.2016, 18:40  [ТС]
ровным счетом ничего...
если удалить строку
PHP
1
$data = [];
То выводится - смотрите сейчас на странице

Добавлено через 48 секунд
но маркеров на карте все равно нет.
Ошибок тоже нет никаких

Добавлено через 43 минуты
применил этот код
<?
ini_set('display_errors', 1);
error_reporting(E_ALL);
?>
для js
есть предупреждения по части html - ошибок нет!

Добавлено через 2 часа 25 минут
есть у меня подозрение, что все значения в колонке geolocation являются строковыми, а надо бы их сделать числовыми.
в общем 500 записей примерно нужно как-то переделать, чтобы js узнал и принял.
вопросов несколько:
1. переделать БД или обработать js?
2. в каждой записи есть числа, две точки, запятая и пробел. как это сохранить?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
27.08.2016, 19:01
Почему у Вас JSON на экран там выводится?

Добавлено через 2 минуты
И ещё: почему при переходе по адресу comfort.маршрут22.рф/marker-layout.php у Вас выводится HTML-код? Я же показал, как надо. И чтобы НИЧЕГО не было в том скрипте, кроме вывода JSON!
0
0 / 0 / 0
Регистрация: 20.09.2015
Сообщений: 40
27.08.2016, 19:15  [ТС]
json вывел для наглядности.
выключить - пара секунд. выключил.
Все сделал в соответствии с "указаниями"!
А выводится html не знаю почему. так настроен движок видимо. opencart так работает.
если обратиться к несуществующей страничке, от балды comfort.маршрут22.рф/treee.php то все равно срабатывает переход на главную страницу сайта
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
27.08.2016, 19:37
Цитата Сообщение от AlexCar Посмотреть сообщение
Все сделал в соответствии с "указаниями"!
Код рабочий. Всё из-за HTML. JSON не будет корректно обрабатываться вперешку с HTML.
Цитата Сообщение от AlexCar Посмотреть сообщение
opencart так работает.
Посмотрите документацию к нему. В корне сайта вообще есть файл marker-layout.php?
0
0 / 0 / 0
Регистрация: 20.09.2015
Сообщений: 40
27.08.2016, 19:50  [ТС]
Путь до файла выглядит так: http://comfort.xn--22-6kc1cvaa... layout.php

Нужно переместить в корень и указать абсолютный путь?

что имеется в виду, когда Вы говорите "все из-за html' ?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
27.08.2016, 19:55
Цитата Сообщение от AlexCar Посмотреть сообщение
что имеется в виду, когда Вы говорите "все из-за html' ?
Вот тут JS-скрипт запрашивает JSON-данные от сервера:
$.getJSON("marker-layout.php", function(data) {
И ожидает получить по этому адресу JSON, а ему возвращается HTML-код. Следовательно, он не может понять его и карту не обозначает, как положено.
Цитата Сообщение от AlexCar Посмотреть сообщение
Нужно переместить в корень и указать абсолютный путь?
Не обязательно в корень. Укажите любой адрес, где будет лежать тот скрипт. Перейдите по адресу и проверьте, точно ли он JSON возвращает.
0
0 / 0 / 0
Регистрация: 20.09.2015
Сообщений: 40
27.08.2016, 19:59  [ТС]
Смотрите: как только я комментирую строку // $data = [];
данные выводятся! сейчас смотрите!
http://comfort.xn--22-6kc1cvaa... layout.php
что из этого является HTML я не пойму...
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
27.08.2016, 20:04
Цитата Сообщение от AlexCar Посмотреть сообщение
как только я комментирую строку // $data = [];
данные выводятся!
Отлично. Сейчас всё верно выводится. А что до
PHP
1
$data = [];
Замените эту строку на
PHP
1
$data = array();
У Вас PHP 5.3 наверное установлена.

Теперь этот адрес пропишите для $.getJSON.
0
0 / 0 / 0
Регистрация: 20.09.2015
Сообщений: 40
27.08.2016, 20:04  [ТС]
Консоль говорит: XHR finished loading: GET "http://comfort.xn--22-6kc1cvaaoh7b.xn--p1ai/marker-layout.php".
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
27.08.2016, 20:07
Лучший ответ Сообщение было отмечено AlexCar как решение

Решение

Я говорю, нужно этот адрес прописать: http://comfort.xn--22-6kc1cvaa... layout.php
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.08.2016, 20:07

передаю массив произвольных байт через блютуз-модуль с STM32
хочу в смартфоне сохранить файл. Байты всякие, могут символы, могут нет. Терминал в смартфоне под Андроидом сами байты видит, в окошке...

Ajax - после загрузки не могу получить элемент
Как быть в такой ситуации, после загрузки аяксом контента в таблицу... У меня не доступны элементы со скрипта... // Тут...

Не могу получить массив Singleton
есть файл конфигурации config.php &lt;? /*Задаются основные конфигурационные настройки базы данных dbnbame - название БД ...

Не могу получить содержимое родителя li когда навожу на него мышкой после дочерней li
В целом нужно создать многоуровневое меню как на картинке. То бишь меню как меню, но справа от возможного пункта всегда должнен быть блок с...

Получить массив данных после store_result() в mysqli
Здравствуйте друзья. Есть такой код, который сначала проверяет количество возвращаемых строк, а потом массив данных. $sql =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Опции темы

Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru