Передача объекта в функцию JavaScript по событию onclick - PullRequest
0 голосов
/ 22 января 2012

Я пытаюсь передать объект в функцию JavaScript, которая должна срабатывать при нажатии на ссылку.Но, к сожалению, я не могу заставить его работать.

Вот код для моего файла JSP для того же:

<script type="text/javascript">
    $(document).ready(function() {
        function tryToDoItTwice(obj) {
            var check = obj;
            if(check == null) {
                return true;
            }
            else {
                alert("You're not allowed to do this twice!");
                return false;
            }
        }
    });
</script>

<a href="<c:url value="/somepath" />" onclick="javascript: tryToDoItTwice(${foo});">Try to do it twice</a>

Здесь foo относится к объекту типа Foo.

Может ли кто-нибудь помочь мне понять, что я здесь не так делаю?

РЕДАКТИРОВАТЬ : Foo - это объект Java.${foo} - это ссылочная переменная, ссылающаяся на Foo Java-объект.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 22 января 2012

Ваша переменная check имеет локальную область видимости для этой функции, поэтому она будет повторно объявляться при каждом вызове функции (без сохранения вашего значения при следующем нажатии.

Вам необходимо расширить область действия вашей функции.переменная.

 var check = null;
  $(document).ready(function() {
        function tryToDoItTwice(obj) {
            check = obj;
            if(check == null) {
                return true;
            }
            else {
                alert("You're not allowed to do this twice!");
                return false;
            }
        }
});

Кроме того, если foo существует в другом месте, вы, вероятно, просто хотите передать его следующим образом:

<a href="<c:url value="/somepath" />" onclick="javascript: tryToDoItTwice(foo);">Try to do it twice</a>

1 голос
/ 22 января 2012

Вы не можете передать объект JAVA напрямую в javascript. Либо вам нужно вернуться как JSON (посмотрите GSON или Джексона для преобразования объекта в JSON), либо передать переменные (не объект) в функцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...