Да, опять - передать данные из php в javascript

12
S3
На сайте с 29.03.2012
Offline
330
1142

Заморочился созданием карты яндекса с обьектами и меню. Кликаешь на обект в меню - он показывается на карте. И как обычно, захотелось универсальности, потому как получается простенький плагин для Вордпресса. Но чтоб не лазить каждый раз в код. Кому интересно - сырая версия, но рабочая тут демка - realby.info/bez-rubriki/karta/

Если по простому забивать данные прямо в код - все ок. Но если брать из опций - проблема.

Суть - нужно получить координаты обьекта из базы и передать их в js - скрипт.

Рабочий вариант -


//Координаты обьектов
var plc1 = [53.943393,27.686113]
Дальше скрипт все правильно обрбатывает

Но мне нужно вытянуть данные из базы и передать их в эту переменную.

Пытаюсь так. на странице-


<input id="coord2" type="text" name="coords2" value="<?php echo get_option('coord2'); ?>">

значение на месте в виде строки [53.943393,27.686113]

дальше пытаюсь передать его в скрипт


var plc2 = $('[name=coords2]').val();
alert (plc2)

alert показывает что данные передались, но их скрипт не может правильно обработать - координаты улетают в океан.

Может надо как-то еще обработать данные, чтобы на выходе из строки получился массив? Я как то привык к полиморфизму питона - там таких проблем нет.

Может есть другие варианты передачи данных в скрипт?

Поможете- поделюсь готовым плагином)

tommy-gung
На сайте с 22.11.2006
Offline
295
#1

var pic2 = pic2.split(',');

получаем array

Здесь не могла быть ваша реклама
S3
На сайте с 29.03.2012
Offline
330
#2

tommy-gung, Спасибо, как вариант подходит, я все-таки надеялся на полиморфизм) Правда в таком варианте все равно не все гладко - при переходе по ссылке, которяа сформирована вышеуказанным способом происходит моргание карты. В остальных вариантах все гладко перемещается.

Залил туда же - http://www.realby.info/bez-rubriki/karta/ при нажатии на 2-ю ссылку почему0то моргает масштаб карты...

ДП
На сайте с 23.11.2009
Offline
203
#3

если у вас в value именно строка - то надо сделать так


var plc1 = JSON.parse($('[name=coords2]').val(););

Для страых браузеров нужен полифилл, чтобы был объект JSON.

totamon
На сайте с 12.05.2007
Offline
437
#4

при чем тут питон и полиморфизм? нужен массив, передавайте сразу массив.

Домены и хостинг https://8fn.ru/regru | Дедик от 3000р https://8fn.ru/73 | VPS в Москве https://8fn.ru/72 | Лучшие ВПС, ТП огонь, все страны! https://8fn.ru/inferno | ХОСТИНГ №1 РОССИИ https://8fn.ru/beget
tommy-gung
На сайте с 22.11.2006
Offline
295
#5

ссылки - это адреса? у меня никакие не работают. загружается только пустая карта Минска

S3
На сайте с 29.03.2012
Offline
330
#6
tommy-gung:
ссылки - это адреса? у меня никакие не работают. загружается только пустая карта Минска

Вот здесь - работает как должно - shop.maxdrive.by/ НО тут забиты сразу данные в переменные без подгрузки

---------- Добавлено 30.09.2016 в 21:06 ----------

Дикий пионер:
если у вас в value именно строка - то надо сделать так
Код:

var plc1 = JSON.parse($('[name=coords2]').val(););

Для страых браузеров нужен полифилл, чтобы был объект JSON.

Супер!!! Это решило проблемы!!! Thanks a lot!

ДП
На сайте с 23.11.2009
Offline
203
#7

В этом JSON по большому счёту два метода - вот этот .parse() - из строки объект делает. и второй - .stringify() - наоборот, из объекта - строку.

L
На сайте с 10.02.2015
Offline
237
#8

json_encode()

json_decode()

L
На сайте с 07.12.2007
Offline
351
#9
Sly32:
при переходе по ссылке, которяа сформирована вышеуказанным способом происходит моргание карты.

setCenter() - да, моргает.

Есть метод метод плавного перемещения по точкам PanTo() - он не должен моргать.

var geo = new Array(53.943393,27.686113); работает на яваскрипте беспроблемно. JSON вам не нужен, вы же не на Аяксе данные получаете, а сразу вставляете их в HTML-код на PHP.

S3
На сайте с 29.03.2012
Offline
330
#10

Ladycharm, Спасибо, за ценные замечания, никогда раньше не вникал в АПИ карт Яндекса, а сейчас зарылся, стало интересно разобраться и сделать что-то работоспособное. Кстати именно PanTo() используется, но была ошибка в формате данных.

Вообще мне не нравиться сама моя идея передачи данных - должен быть более изящный способ, возможно через создание файла json/xml

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий