Клуб API Карт

При сохранении координат метки в базе mysql ...

sega-zav
16 апреля 2012, 13:31

При сохранении координат метки в базе mysql иногда вместо координат (например, 39.03023,45.072836) сохраняется в базе: [object HTMLInputElement]

 

Что это означает и как этого избежать?

17 комментариев
Подписаться на комментарии к посту

такое может возвращать метод toString у DOM-элемента input,

вам нужно сохранять его св-во value, а не сам элемент.

 

Вообще все зависит от того как именно вы отправляете данные на сервер,

и этот вопрос выходит за рамки тематики данного клуба, т.к. к АПИ он не имеет отношения.

Координаты метки задаются двумя вариантами (в зависимости от задачи на карте):

1) metka = geocoder.get(0).getGeoPoint();

2) metka = mEvent.getGeoPoint();

 

и затем при клике на кнопку "submit" значение "metka" заносится в скрытое поле формы document.form1.metka.value=metka;

 

Что именно нужно исправить?

не знаю.

зависит от того как вы отправляете эту форму на сервер.

Вообще можно обойтись и без формы и скрытых полей, если использовать AJAX

Кнопка "submit" одновременно выполняет: document.form1.metka.value=metka в поле обработчиком onClick и отправляет стандартным методом POST форму вместе с остальными данными не скрытых полей на сервер.

что значит "обработчиком onClick"?

 

function load_data(){
document.form1.metka.value=metka;
}

я бы не стал так делать.

где гарантия того что во всех броузерах клик отработает раньше submit-а?

Т.е. вы считаете, что в этом вся причина?

 

Т.е. вы считаете, что в этом вся причина?

нет, я просто о том что лучше не полагаться на неявные алгоритмы.

Да, вы правы.

Лучше сделать добавление координат метки в скрытое поле, при клике на карте.

 

Ну а все таки, как можно избежать появление в value скрытого поля: [object HTMLInputElement]

 

Как вы думаете это поможет:

 

1) metka = geocoder.get(0).getGeoPoint().toString();

2) metka = mEvent.getGeoPoint().toString();

это не помешает,
но эти вещи явно не связаны, т.к. проблема именно в том что у вас инпут неправильно сериализуется при отправке

Т.е. в поле значение записывается всегда в нормальном виде, а уже из значения value может быть извлечено [object HTMLInputElement]


А может не все параметры поля указаны?

Или в нем больше нет обязательных параметров?

Вообще если вы не используете никакой предварительной обработки полей перед отправкой 

(всмысле не собираете из них данные в цикле по полям формы и формируете из них чтото)
такое не должно происходить в принципе

Да в том то и дело, что нет.

Вот вся обработка поля: и далее уже $metka заносится в базу.

нет я про обработку в js перед отправкой формы

Почитал предыдущий тред.
Вероятней всего у вас проблема связана с тем что вы используете одно и тоже имя для переменной в JavaScript и для имени поля input. Я про metka

Измените что-то одно. Например назовите переменную как metka_val

Да, действительно, имя переменной совпадают.

Спасибо, думаю, что это решит данную проблему!