Забыли пароль?
Запросите новый здесь.

Автор темы: yury
ID темы: 1479
Информация:
Тема содержит 16 сообщения, была просмотрена 4542 раз.
Просмотр темы
PHP-Fusion Russia » Поддержка 7 версии » Вопросы новичков
 Распечатать тему
Вопросы по передаче через JSON
yury
в теме предлагаю задавать вопросы связанный с JSON

и я как и прежде со своим вопросом, на котором и интересно разобрать этот момент. при подключении библиотеки квери версии 1.3.2 все работает корректно, но новая версия яндекс.карт позволяет не подключать столь древнюю библиотеку, но и JSON тогда почему то не работает.

рабочий синтаксис с квери 1.3.2

Загрузить источник  GeSHi: Javascript
  1. <script src="http://api-maps.yandex.ru/2.0/?load=package.full&lang=ru-RU" type="text/javascript"></script>
  2. <script type="text/javascript" src="http://yandex.st/jquery/1.3.2/jquery.min.js"></script>
  3.  
  4. <script type="text/javascript">
  5.  
  6. ymaps.ready(init);
  7.  
  8. function init () {
  9.  
  10. var myMap = new ymaps.Map("map", {center: [55.302988,47.415765],zoom: 11, checkZoomRange: true});
  11. myMap.controls.add("zoomControl")
  12. .add("typeSelector")
  13. .add("mapTools");
  14.  
  15. myGeoObjects = [];
  16.  
  17. $.getJSON("markers.php", function(json){
  18. if (json.status == 'OK') {
  19. for (i = 0; i < json.markers.length; i++) {
  20. myPlacemark = new ymaps.Placemark(
  21.  
  22. // Координаты
  23. [json.markers[i].lat, json.markers[i].lon],
  24.  
  25. // данные
  26. {
  27.  
  28. balloonContentHeader: '<div style="color:#659cc9;">'+json.markers[i].cname+'</div>',
  29. balloonContentFooter: '<strong>Адрес:</strong> '+json.markers[i].address+'</span>',
  30. });
  31. myGeoObjects.push(myPlacemark);
  32. }
  33. clusterer = new ymaps.Clusterer();
  34. clusterer.options.set({
  35. gridSize: 100,
  36. minClusterSize:2,
  37. synchAdd:true
  38. })
  39. clusterer.add(myGeoObjects);
  40. myMap.geoObjects.add(clusterer);
  41. }
  42. else
  43. {
  44. alert('Произошла ошибка!');
  45. }
  46. })
  47.  
  48. }
  49. </script>
  50.  
  51.  
  52.  
  53. <div id="map" style="height: 400px;"></div>
Добавлено за 0.005 секунд, используя GeSHi 1.0.8.10


отключил библиотеку 1.3.2, т.к в движке юзается новая версия 1.8.3 - JSON перестает передавать данные, т.е данные на карте не выводятся

в чем может быть проблема? при этом новая версия яндекс.карт позволяет использовать такой скрипт

Загрузить источник  GeSHi: HTML
  1. <script src="http://api-maps.yandex.ru/2.0/?load=package.standard,package.clusters&lang=ru-RU" type="text/javascript"></script>
Добавлено за 0.002 секунд, используя GeSHi 1.0.8.10

но и подставив его, JSON не отдает данные
Изменил(а) yury, 23.04.2013 08:40
 
yury
если же подставить некие данные напрямую без JSON, то все выводит корректно

Загрузить источник  GeSHi: Javascript
  1. // Создадим 500 меток со случайными координатами около центра Москвы.
  2. for (var i = 0; i < 500; i++) {
  3. var coordinates = [
  4. center[0] + 0.5 * Math.random() * (Math.random() < 0.5 ? -1 : 1),
  5. center[1] + 0.7 * Math.random() * (Math.random() < 0.5 ? -1 : 1)
  6. ];
  7. geoObjects[i] = new ymaps.Placemark(coordinates, {
  8. name: 'Метка №' + i,
  9. clusterCaption: 'Метка №' + i,
  10. balloonContentBody: '<br>Варкалось. Хливкие шорьки<br>' +
  11. 'Пырялись по наве<br>' +
  12. 'И хрюкотали зелюки,<br>' +
  13. 'Как мюмзики в мове.<br>',
  14. balloonContentHeader: 'Бармаглот',
  15. balloonContentFooter: 'Л. Кэрролл'
  16. });
  17. }
  18.  
  19. // Добавим полученные геообъекты в кластеризатор.
  20. clusterer.add(geoObjects);
  21. // А сам кластеризатор добавим на карту.
  22. myMap.geoObjects.add(clusterer);
Добавлено за 0.004 секунд, используя GeSHi 1.0.8.10
 
Rush
не знаю, смотри консоль
 
Web
mishqa35
Скачать исходники  Код
});
 
}
</script>



Скачать исходники  Код
balloonContentHeader: '<div style="color:#659cc9;">'+json.markers[i].cname+'</div>',
balloonContentFooter: '<strong>Адрес:</strong> '+json.markers[i].address+'</span>',



 
Web
yury
mishqa35 написал:

Возможно?
Скачать исходники  Код
});
 
}
</script>




тогда бы вариант с квери 1.3.2 тоже бы наверное не работал? а с ним работает. стоит его отключить и даже подключить

Загрузить источник  GeSHi: HTML
  1. <script src="//api-maps.yandex.ru/2.0/?load=package.standard,package.clusters&lang=ru-RU" type="text/javascript"></script>
Добавлено за 0.002 секунд, используя GeSHi 1.0.8.10

как указано http://api.yandex.ru/maps/jsbox/cluster_balloon_layout

и перестает выводить
 
mishqa35
возможно старая версия квери не так критично относится к синтаксическим ошибкам
пример что ты дал не подключает квери, т.к там нету его кода вообще
 
Web
yury
пробовал чисто адаптировать код из песочницы

Загрузить источник  GeSHi: Javascript
  1. $.getJSON("markers.php", function(json){
  2. if (json.status == 'OK') {
  3. for (i = 0; i < json.markers.length; i++) {
  4.  
  5.  
  6. geoObjects[i] = new ymaps.Placemark(
  7. // Координаты
  8. [json.markers[i].lat, json.markers[i].lon],
  9.  
  10. // данные
  11. {
  12.  
  13. name: 'Метка №' + i,
  14. clusterCaption: 'Метка №' + i,
  15. balloonContentHeader: '<div style="color:#659cc9;">'+json.markers[i].cname+'</div>',
  16. balloonContentFooter: '<strong>Адрес:</strong> '+json.markers[i].address+'</span>'
  17. });
  18. }
  19.  
  20. // Добавим полученные геообъекты в кластеризатор.
  21. clusterer.add(geoObjects);
  22. // А сам кластеризатор добавим на карту.
  23. myMap.geoObjects.add(clusterer);
  24. }
  25. else
  26. {
  27. alert('Произошла ошибка!');
  28. }
  29. });
Добавлено за 0.003 секунд, используя GeSHi 1.0.8.10


но все равно не выводит.
 
yury
mishqa35 написал:

возможно старая версия квери не так критично относится к синтаксическим ошибкам
пример что ты дал не подключает квери, т.к там нету его кода вообще


так я прямо из песочницы взял код и подставил туда вывод массива. все остальное осталось прежним, но почему то не выводит. может JSON как то вызывается по другомув новых версиях, а не просто $.getJSON?
 
mishqa35
Скачать исходники  Код
      for (i = 0; i < json.markers.length; i++) {
         myPlacemark[i] = new ymaps.Placemark(
         
         // Координаты
         [json.markers[i].lat, json.markers[i].lon],
         
         // данные
         {
         
         balloonContentHeader: '<div style="color:#659cc9;">'+json.markers[i].cname+'</div>',
         balloonContentFooter: '<strong>Адрес:</strong> '+json.markers[i].address+'</span>'
         });
         myGeoObjects.push(myPlacemark[i]);
      }



 
Web
mishqa35
скинул бы файл markers.php возможно там проблема
 
Web
yury
вот код маркерса

Загрузить источник  GeSHi: PHP
  1. <?php
  2.  
  3. require_once "maincore.php";
  4. header("Content-Type: application/x-suggestions+json; charset=windows-1251");
  5. if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
  6.  
  7. $json = '{markers:['."\n";
  8.  
  9. $query1= "SELECT news_id, news_adress, news_coords, news_subject, FROM ".DB_NEWS."
  10. WHERE ".groupaccess('news_visibility')." AND (news_start='0'||news_start<=".time().")
  11. AND (news_end='0'||news_end>=".time().") AND news_draft='0'
  12. GROUP BY news_id ORDER BY news_sticky DESC, news_datestamp DESC";
  13. $result1 = mysql_query($query1);
  14.  
  15. if(mysql_num_rows($result1)>0)
  16. {
  17. while ($par1 = mysql_fetch_array($result1)){
  18.  
  19. $exp_str = explode(",", $par1['news_coords']);
  20.  
  21. $lat = $exp_str[0];
  22.  
  23. $lng = $exp_str[1];
  24.  
  25. $json.= "\n".'{'.'"id": "'.$par1['news_id'].'",';
  26.  
  27. $json.= '"cname": "'.$par1['news_subject'].'",';
  28.  
  29. $json.= '"address": "'.$par1['news_adress'].'",';
  30.  
  31. $json.= '"lat": "'.$lat.'",';
  32.  
  33. $json.= '"lon": "'.$lng.'"';
  34.  
  35. $json.= '},';
  36.  
  37. }
  38.  
  39. $json = substr($json, 0,-1);
  40.  
  41. echo $json;
  42.  
  43. echo '], ', "\n", '"status": "OK"', "\n", '}';
  44.  
  45. }
  46. else
  47. {
  48. echo '{"status": "false"}';
  49. }
  50.  
  51. }
  52.  
  53. ?>
Добавлено за 0.044 секунд, используя GeSHi 1.0.8.10
 
yury
вообще интересный момент обнаружил, что просто подставив JSON скрипт перестает выводить даже дефолтный код песочницы, хотя ему должно быть все равно наверное

Загрузить источник  GeSHi: Javascript
  1.  
  2. $.getJSON("markers.php", function(json){
  3. if (json.status == 'OK') {
  4.  
  5. здесь рабоий код песочницы, который перестал выводиться
  6.  
  7. }
  8. else
  9. {
  10. alert('Произошла ошибка!');
  11. }
  12. })
  13.  
Добавлено за 0.002 секунд, используя GeSHi 1.0.8.10
 
mishqa35
Чтобы загрузка происходила сразу после загрузки страницы
Скачать исходники  Код
jQuery(document).ready(function () {
весь js код ..
});



 
Web
yury
mishqa35 написал:

Чтобы загрузка происходила сразу после загрузки страницы
Скачать исходники  Код
jQuery(document).ready(function () {
весь js код ..
});



так вот дело в том, что либо не передается через Json Данные, либо просто не выводятся. с 1.3.2 видимо сменилось что-то у актуальных версий квери
 
mishqa35
Оффтопик много чего изменилось с 1.3.2

json можно передать не только с помощью $.getJSON
$.ajax(, {},json); примерно так
 
Web
yury
вот что у меня получилось, подставив джейсон в пример из песочницы

Загрузить источник  GeSHi: Javascript
  1.  
  2. $.getJSON('markers.php', function(json){
  3. if (json.status == 'OK') {
  4. for (var i = 0; i < json.markers.length; i++) {
  5. var coordinates = [
  6. [json.markers[i].lat, json.markers[i].lon],
  7. ];
  8. geoObjects[i] = new ymaps.Placemark(coordinates, {
  9. name: ''+json.markers[i].cname+'',
  10. balloonContentHeader: '<div style="color:#659cc9;">'+json.markers[i].cname+'</div>',
  11. balloonContentBody: '',
  12. balloonContentFooter: '<strong>Адрес:</strong> '+json.markers[i].address+'</span>',
  13. balloonContentFooter: ''
  14. });
  15. }
  16.  
  17.  
  18. // Добавим полученные геообъекты в кластеризатор.
  19. clusterer.add(geoObjects);
  20. myMap.geoObjects.add(clusterer);
  21. }
  22. else
  23. {
  24. alert('Произошла ошибка!');
  25. }
  26. })
Добавлено за 0.003 секунд, используя GeSHi 1.0.8.10


но точки не выводит
 

Поделиться этой темой
Социальные закладки: Vkontakte Odnoklassniki Mail.ru Facebook Google Tweet This
URL:
BBcode:
HTML:

Перейти на форум:
Похожие темы
Темы Форум Ответов / Просмотров Последние сообщения
Защита данных элемента формы от ввода кода по передаче GET и POST  →  Безопасность 1 / 1269 16.02.2017 21:20
Power Fusion Forum - все вопросы и ответы  →  Моды 111 / 83309 09.09.2016 19:03
Консультации по SEO - задавайте вопросы  →  СЕО 18 / 11901 25.10.2015 11:05
Доступ к панели через N время  →  Пожелания и предложения 4 / 2524 24.10.2015 16:53
Как к целому числу добавить ноль через точку  →  PHP 5 / 1721 13.10.2014 18:33
Есть ли плагин удобный, чтобы через админку добавлять свои bb-коды ?  →  Плагины 2 / 4355 21.09.2014 16:03
Как и где регистрировать сайт? Все вопросы касаемые регистрации сайта в соответствующих органах влас  →  Разное 4 / 2210 12.08.2014 21:31
Необходимо 3 модификации с упрвлением через админку  →  Платные услуги 2 / 1280 09.07.2014 06:29
Вопросы и предложения  →  Лучшее новогоднее поздравление 2014 0 / 750 24.12.2013 09:24
Вопросы по плагину каталога mirivlada'a  →  Плагины 18 / 8979 12.12.2013 13:03
Топ 5 пользователей форума
Alex Alex (1,171)   Zaxap Zaxap (1,078)   Vova Vova (877)   Pisatel Pisatel (678)   util util (666)