Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 20.09.2015
Сообщений: 40

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

23.08.2016, 10:41. Показов 2671. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Запрет дублирования строк в табличной части
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) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru