Сохранить значение в базе данных, созданной из представлений

У меня есть переменная, вычисленная в моем javascript в представлении в Grails. Теперь я хотел сохранить это значение в базе данных в соответствующем месте. Как я могу это сделать? Например: у меня есть адрес участника, и через него я вычислил соответствующую широту и долготу. Я хочу сохранить их в своей базе данных. Пожалуйста, скажите мне, как я могу это сделать. Спасибо


person mojito89    schedule 18.04.2012    source источник


Ответы (1)


Вы уже пробовали что-нибудь и можете опубликовать код

Я могу придумать 2 возможных способа сделать это. Вероятно, есть еще. Но я бы порекомендовал первый.

1) вызов javascript ajax с использованием jquery (если вы используете прототип или какую-либо другую структуру javascript... должно быть что-то для этого - это очень распространенная вещь)

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

$('#buttonOrSomethingToDriveFunctionCall').click(function() {
  $.ajax({
    url: "${createLink(controller: 'user', action: 'saveData')}",
    data: yourDataHere,
    success: function(data) {
        // do something on success
      } 
    });
 });

2) было бы написать какой-нибудь отличный код в середине вашего представления, чтобы напрямую вызывать контроллер. Это своего рода плохая идея; вам нужно будет что-то сделать, чтобы сохранить данные на странице, и это сделает ваш gsp уродливым.... Спагетти-код

<%@ page import="controllerName" %>

<%
   controllerName->saveData(dataFromjavaScript)

%>
person nate_weldon    schedule 18.04.2012
comment
Я бы также согласился на вызов Ajax. Возможно, я слишком придирчив к этому, так что вам может быть все равно. Но по умолчанию Ajax выдает запрос GET. И это ограничено одной тысячей символов данных, и стандарты HTML не предполагают, что вы должны использовать для неидемпотентных запросов, то есть запросов, которые изменят состояние вашей базы данных. Поэтому я бы использовал метод $.post вместо $.ajax - person Alexandre Bourlier; 18.04.2012
comment
$.post — это сокращенный способ использования $.ajax для запросов POST. Между их использованием нет большой разницы — они оба стали возможными с использованием одного и того же базового кода. Как правило, $.ajax лучше использовать, если вам требуется более глубокая настройка по сравнению с запросом ajax, если вы собираетесь использовать только простые запросы $.post в своих скриптах и ​​приложениях, post проще и удобнее в использовании. также $.post() поддерживает только успешные обратные вызовы, $.ajax() поддерживает обратные вызовы перед отправкой, успех, ошибка и полные обратные вызовы. Обычно я предпочитаю всегда использовать $.ajax() - person nate_weldon; 18.04.2012
comment
Я понимаю вашу точку зрения. Тогда я должен был предложить уточнить тип вызова $.ajax для POST. - person Alexandre Bourlier; 19.04.2012