Связь Django-jQuery: как получить дату от серверной части до JS? - PullRequest
4 голосов
/ 19 мая 2011

У меня есть страница, которая использует JQuery для некоторых AJAX-вещей и Django в качестве основного сервера приложений.Допустим, у меня есть какая-то ссылка, к которой я хочу прикрепить обработчик 'click', чтобы отобразить диалог jQuery, в котором содержимое диалога загружается через сервер AJAX.Серверу нужен какой-то идентификатор для генерации содержимого диалога.Это доступно в оригинальном шаблоне сайта и должно быть передано на сервер с помощью JS.Каков наиболее правильный (или «лучший метод») способ хранения упомянутого идентификатора на странице:

Методы

  1. Создайте ссылку и прикрепите «щелчок»msgstr "обработчик, который делает preventDefault() и использует ссылку в JS.Т.е.: <a id="do-dialog" href="{% url app.views.some_view param=object.id %}">Show me!</a> и JS, который выглядит следующим образом:

    $("#do-dialog").click(function (e) { 
       var url = $(this).attr("href");
       /* do ajax with url */
       e.preventDefault();
    });
    
  2. Кодировать идентификатор в атрибуте класса или идентификатора ссылки.Т.е.: <a class="do-dialog object-{{ object.id }}" href="#">Show me!</a> и использовать JS для получения идентификатора из класса и использовать его.

  3. Нарушить HTML, вставить идентификатор в пользовательский атрибут и извлечь его оттуда: <a obj-id="{{ object.id }" class="do-dialog" href="#">Show me!</a>

Плюсы и минусы

  1. Похоже, самый "правильный" способ сделать это.Данные хранятся в известном атрибуте и могут использоваться непосредственно из JS.Однако если пользователь отключил JS, он перейдет на страницу, которая возвращает JSON или XML.( Примечание: для этого конкретного сайта вполне нормально, если не работать с JS отключено !)

  2. Не имеет этогоdisatvantage.С выключенным JS ничего не произойдет.Однако вы должны проанализировать идентификатор из атрибута class, который выглядит немного уродливо и подвержен ошибкам.

  3. Не является допустимым HTML.С другой стороны, у вас есть необходимые данные непосредственно доступны.

1 Ответ

3 голосов
/ 19 мая 2011

Подход № 1 имеет наибольшее значение. Вы фактически внедряете данные, где они будут использоваться, и их действительный HTML. Вы также можете поместить данные в скрытый элемент формы. Или, если вы используете HTML5, вы можете использовать новые атрибуты данных.

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