Вопросы по передаче данных через JSON

#1 23 апреля 2013 в 12:09
в теме предлагаю задавать вопросы связанный с JSON

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

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

  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>
отключил библиотеку 1.3.2, т.к в движке юзается новая версия 1.8.3 — JSON перестает передавать данные, т.е данные на карте не выводятся

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

  1. <script src="http://api-maps.yandex.ru/2.0/?load=package.standard,package.clusters&lang=ru-RU" type="text/javascript"></script>
но и подставив его, JSON не отдает данные.

если же подставить некие данные напрямую без JSON, то все выводит корректно

  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);
#2 23 апреля 2013 в 12:24
пробовал взять код из песочницы, но все равно не выводит

пробовал чисто адаптировать код из песочницы

  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. });
но все равно не выводит.

код маркерса, который передает данные
  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. ?>
#3 23 апреля 2013 в 15:51
Ребят, подскажите пожалуйста, видел в документации, что работа с JSON после версии 1.3 квери сменилась, но не могу понять как и что поменять
#4 24 апреля 2013 в 12:25
$json = '{ "markers":['."\n";

Изменения были в версии jQuery 1.5
#5 24 апреля 2013 в 21:41

$json = '{ "markers":['."\n";

• Mike •

Дружище, дорогой, Mike, где же ты был все эти дни dance

я 2 суток потратил, из-за этих кавычек фиговых crazy
#6 24 апреля 2013 в 21:58
«загрузка» большая, «код читать наспех» не люблю… )
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.