2009-01-07 2 views
1

Как получить текст выбранного элемента из элемента выпадающего списка в форматах html? (using python) Как сохранить значение переменной, когда я выбираю один элемент из раскрывающегося списка с помощью мыши? (т. е. без использования кнопки отправки)Получение выбранного значения из раскрывающегося списка в форме html без отправки

Это приложение, которое я использую в движке приложения, которое поддерживает только Python.

ответ

19

Ваш вопрос показывает некоторое недоразумение относительно того, как работает web applications.

Пользователь должен ввести адрес в браузере, чтобы перейти к приложению. Это отправляет запрос на сервер. Код сервера (написанный на python) получает этот запрос и имеет возможность отправить ответ. Ответ - это документ, обычно написанный в HTML. Некоторые части этого документа могут быть динамическими, то есть сгенерированы кодом python. Другие части документа могут быть статическими. Затем браузер отображает документ в окне пользователя.

После этого единственный способ, которым ваш код на Python может знать о том, что происходит в окне браузера, или для запуска любой части кода python, заключается в том, чтобы заставить браузер отправить другой запрос.

Это может произойти во многих ситуациях, наиболее распространенными из которых являются:

  • пользователь нажимает на ссылку на другой URL, что делает браузер отправить еще запрос на этот новый адрес.
  • Пользователь нажимает на кнопку submit, что делает браузер отправить форму как запрос к заданному адресу в атрибуте формы в action.
  • Некоторый код на фактической странице, обычно написанный в ECMAscript (также известный как javascript), делает запрос под капотом.

Последний - это то, что вы хотите. Вы должны написать в javascript некоторый код, чтобы браузер отправил информацию, выбранную при выпадающем списке на сервер. Таким образом, ваш код python на сервере может что-то с этим поделать.

Простой способ сделать это, сделав onchange событие выпадающего сделать представить:

<select name='myfield' onchange='this.form.submit()'> 
<option .... > 
... 
</select> 
</form> 

Таким образом, когда пользователь изменяет значение на раскрывающемся меню, форма будет занесена в если пользователь нажал кнопку «Отправить». Будет запущен код Python на сервере. Браузер загрузит ответ.

Другим популярным способом было бы использовать API-интерфейс XmlHTTPRequest javascript для отправки запроса. Таким образом, вы можете получить значение в python и отправить ответ, который, в свою очередь, будет получен кодом javascript в браузере. Этот код может изменять часть страницы на основе ответа, без изменения всей страницы. Этот метод называется AJAX.

Если вы планируете написать много кода javascript, я настоятельно рекомендую использовать библиотеку javascript, по крайней мере, для облегчения боли при работе со многими версиями браузера. jQuery - это моя библиотека.

. Другими словами, код, написанный на javascript в браузере , содержит ссылки на код, написанный на python, запущенном на сервере.

+0

Большое спасибо! это сработало. и специальную благодарность за дополнительную информацию. Я новичок .... – Tom

3

Ваш код python запускается на сервере (Google appengine). HTML-версия выполняется на клиенте (в браузере). Клиент и сервер обмениваются данными по протоколу HTTP. Клиент отправляет , а сервер отвечает ответами. Вы должны отправить что-то на сервер, чтобы ваш код на Python знал о действиях пользователя.

На стороне клиента вы можете использовать Javascript (рассмотрите возможность использования библиотеки jQuery). Вероятно, вы можете уйти без общения с сервером.

Если вам нужно связаться с сервером, но не хотите перезагружать страницу, используйте AJAX technique. В этом случае вам нужно создать специальные представления в вашем приложении python и инициировать запросы в Javascript.

Помните, Javascript для клиентской стороны, Python предназначен для серверной версии.

+0

Большое спасибо за быстрый ответ! – Tom

1

Если вам нужно отправить выбранное значение на ваш сервер без отправки, я думаю, что лучший (если не единственный) aproach будет использовать некоторые ajax.

Если вы используете jQuery, взгляните на it's ajax stuff. и это Events model. Сначала вам нужно прикрепить событие выпадающего списка к функции, которую вы хотите выполнить. Таким образом, когда пользователь меняет раскрывающийся список, браузер открывает новое соединение за кулисами. Таким образом, вы можете получить это значение и сохранить его на стороне сервера. Было бы. например:

$(document).ready( 

    $("#select_id").change(function() { 
     $(this).getJSON("/method", {"selectValue":$(this).val()}, function() { 
        alert("value received!"); 
       }); 
    }); 

); 

Надеюсь, это поможет!

+0

Большое спасибо за быстрый ответ! – Tom

0

Проблема с использованием onchange заключается в том, что не все пользователи используют мышь. Если у вас есть комбинированное поле и изменить значение с помощью клавиатуры, вы никогда не сможете пройти первое значение без отправки формы.

~ Cyrix

 Смежные вопросы

  • Нет связанных вопросов^_^