У меня есть переменная, вычисленная в моем javascript в представлении в Grails. Теперь я хотел сохранить это значение в базе данных в соответствующем месте. Как я могу это сделать? Например: у меня есть адрес участника, и через него я вычислил соответствующую широту и долготу. Я хочу сохранить их в своей базе данных. Пожалуйста, скажите мне, как я могу это сделать. Спасибо
Сохранить значение в базе данных, созданной из представлений
Ответы (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
Я бы также согласился на вызов Ajax. Возможно, я слишком придирчив к этому, так что вам может быть все равно. Но по умолчанию Ajax выдает запрос GET. И это ограничено одной тысячей символов данных, и стандарты HTML не предполагают, что вы должны использовать для неидемпотентных запросов, то есть запросов, которые изменят состояние вашей базы данных. Поэтому я бы использовал метод $.post вместо $.ajax
- person Alexandre Bourlier; 18.04.2012
$.post — это сокращенный способ использования $.ajax для запросов POST. Между их использованием нет большой разницы — они оба стали возможными с использованием одного и того же базового кода. Как правило, $.ajax лучше использовать, если вам требуется более глубокая настройка по сравнению с запросом ajax, если вы собираетесь использовать только простые запросы $.post в своих скриптах и приложениях, post проще и удобнее в использовании. также $.post() поддерживает только успешные обратные вызовы, $.ajax() поддерживает обратные вызовы перед отправкой, успех, ошибка и полные обратные вызовы. Обычно я предпочитаю всегда использовать $.ajax()
- person nate_weldon; 18.04.2012
Я понимаю вашу точку зрения. Тогда я должен был предложить уточнить тип вызова $.ajax для POST.
- person Alexandre Bourlier; 19.04.2012