我是Webpy的新手。目前,我无法检索下拉菜单中选择的项目,我还没有看到任何帮助。有谁能告诉我如何解决这个问题?
由于
我的python服务器:
import web
import pdb
from matching_tester import *
def make_text(string):
return string
class tutorial:
def GET(self):
form = my_form()
return render.tutorial(my_form(), "Your text goes here.")
def POST(self):
form = my_form()
form.validates()
s = form.d.Devices
print s
return make_text(s)
if __name__ == '__main__':
urls = ('/', 'tutorial')
render = web.template.render('templates/')
app = web.application(urls, globals())
my_form = web.form.Form(
web.form.Dropdown('Devices', [('1', 'iPhone 4'),
('2', 'iPhone 4S'),
('3', 'iPhone 5')],
web.form.notnull,
**{'multiple':None, 'size': 4}),
web.form.Dropdown('Country', [('1', 'All'),
('2', 'US'),
('3', 'JP')],
web.form.notnull,
**{'multiple':None, 'size': 4})
)
app.run()
我的HTML:
=== tutorial.html ===
$def with (form, text)
<!doctype html>
<html>
<head>
<title>Python and AJAX tutorial for beginners with webpy and jQuery</title>
<link rel="stylesheet" type="text/css" href="/static/tutorial.css" />
<script type="text/javascript" src="/static/jquery.js"></script>
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery(".button").click(function() {
var input_string = $$("input#textfield").val();
jQuery.ajax({
type: "POST",
data: {textfield : input_string},
success: function(data) { jQuery('#foo').html(data).hide().fadeIn(1500);
},
});
return false;
});
});
</script>
</head>
<body>
<br>
<form class="form" method="post">
$:form.render()
<input class="button" type="submit" value="send"/>
</form>
<br><br>
<span id="foo">$text</span>
</form>
</body>
</html>
答案 0 :(得分:0)
你工作太辛苦了:
你的python代码很好。您的HTML没问题,但嵌入式JavaScript是问题所在。
具体来说,您对var input_string = ...
的调用很糟糕(并且不必要)。您没有标识为textfield
的输入元素。无论如何,你不需要它。
在你的ajax调用中,你发送的是错误的数据,即textfield的值。相反,只需序列化表单并发送该信息。:
jQuery.ajax({
type: "POST",
data: jQuery('form').serialize(), // <-- Here
success: function (data) {
jQUery('#foo').html(data).hide().fadeIn(1500);
},
});