Клуб API Карт

Не отображаются точки на карте

Пост в архиве.

В общем, такая проблема.

Есть карта. Точки загружаются посредством файла импорта.

На старом сайте все работало нормально. После того, как нам сделали новый сайт - карта перестала корректно работать.

адрес - http://elamed.com/include/map/

15 комментариев

Проблема в вашем файле main.js

Вы запрашиваете данные методом POST

и они приходят ввиде строки, которую Вы пытаетесь перебирать как массив

 

 

    $.post(        'ajax_get_address.php',        {            type: search_type,             val: val        },        function  (data){// data - строка

Надо либо указать dataType: 'json' в вызове post

или использовать JSON.parse

и отдавать правильный content-type от сервера

ЕПЗ отдел 54
28 января 2016, 01:08

а где и что исправить надо?)

файл main.js $.post(        'ajax_get_address.php',        {            type: search_type,             val: val          },        function  (data){замените на $.ajax(        url: 'ajax_get_address.php',        dataType: 'json',        type: 'post',        data: {            type: search_type,             val: val          },        function  (data){
ЕПЗ отдел 54
28 января 2016, 01:08

Ничего не изменилось(

в 1 выпадающем меню по прежнему пишет undefined

у вас отдается неправильный заголовок c файлом ajax_get_address.php:

Content-Type:text/html; charset=utf-8

Должен быть:

Content-Type:application/json; charset=utf-8

из-за этого изначально и была проблема,

jQuery умеет сам определять тип по этому заголовку, а вы его обманули

ЕПЗ отдел 54
28 января 2016, 01:08

и как это помнеять?

Вы пишите на php или я?

Видимо так

header('Content-type: application/json');


ЕПЗ отдел 54
28 января 2016, 01:08

Там уже стоит так 

 

 

 require_once 'lib/get_map.php';    $map = new getMap();    $address = $map->getAddressList($_POST['type'], $_POST['val']);    header("Content-Type: application/json; charset=utf-8");    echo $address;?>

 

 

ЕПЗ отдел 54
28 января 2016, 01:08

меняю и появляется куча ошибок

Всеволод Шмыров
28 января 2016, 01:08
Доброе утро! У вас ошибка в коде на строчке

var coords = data[i].point_coords.replace(" ", ",");
data - это не объект, а строка.
Нужно у выставить опцию dataType у $.post
ЕПЗ отдел 54
28 января 2016, 01:08

а куда это подставить? 

Можете готовую часть кода скинуть.

а то что-то понять не могу(

Всеволод Шмыров
28 января 2016, 01:08
http://api.jquery.com/jQuery.post/

jQuery.post( url [, data ] [, success(data, textStatus, jqXHR) ] [, dataType ] )

$.post(
        'ajax_get_address.php',
        {
            type: search_type,
            val: val 
        },
        function  (data){ ... },
        'json');
ЕПЗ отдел 54
28 января 2016, 01:08

тоже куча ошибок

Всеволод Шмыров
28 января 2016, 01:08
Значит вы что-то делаете не так
ЕПЗ отдел 54
28 января 2016, 01:08

да нет. всё делаю как Вы говорите.