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

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

23.08.2016, 10:41. Показов 2173. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru