TKS
答案 0 :(得分:8)
不一定需要Ajax,因为你只需提交表单,无论你是唱Django还是其他服务器端选择都没有区别,只需使用像......这样的东西:
<form name=companiesForm action="whateverurl" method=POST>
<p>
<select name=companySelect size=1 onChange="companiesForm.submit();">
<option value="" SELECTED>Choose A Company
<option value="1">One Company
<option value="2">Another Company
<option value="3">A Third Company
</select>
</p>
</form>
答案 1 :(得分:3)
亚历克斯的回答是一条很好的路,但这里有另一种选择。 Django和slugs相处得很好。而且,带有jquery的不引人注目的javascript目前很流行。
您可以直接导航到构造良好的URL,而不是POST一个值。这样做的另一个好处是可以让页面更加友好,让人们为页面添加书签,并且当有人点击后退按钮时,也避免了关于POST信息的愚蠢错误。
请注意,在Alex或我的代码中,如果在客户端浏览器上禁用了javascript,导航将会中断。提供一些页脚链接到这个组合框在页面某处(底部可能)的位置是个好主意。
(未经测试,可能需要稍微调整一下)
<!-- you'll need jquery to make this work -->
<script type="text/javascript">
$(function() {
// navigate to page on click event
$('#nav_combo').bind('change', function() { goToPage(); } );
});
function goToPage() {
var baseUrl = '/your/base/url/';
window.location.href = baseUrl + $('nav_combo').val()
}
</script>
...
<form>
<select id="nav_combo">
<option value="page-1-slug">Page 1</option>
<option value="page-2-slug">Page 2</option>
</select>
</form>
编辑 - 顺便说一下,我应该提到你可以轻松使用上面插入django object_detail generic view的代码。