我的html文件中有一个select标签。我想当用户更改他/她的选择时,我的页面必须使用ajax,将用户选择的值发送到我的views.py函数,然后我重新创建具有此值的页面。 我的HTML代码:
<div id="response>
<select name="page_length_name" id="page_length_id">
<option id="opt1">10</option>
<option id="opt2">20</option>
<option id="opt3">30</option>
<option id="opt4">40</option>
</select>
//here is a table
</div>
(此选择标签不在表格中)。我希望它被修复,直到用户更改数据。所以我想我必须使用cookie。我不知道我可以使用这样的功能,虽然选择不是形式?应该是“POST”方法吗?只能在表格中使用?如果是,那么如何将数据(我的选择标签)发送到服务器?
$(function() {
$('#page_length_id').change(function() {
temp = ["page_length_id"].options[selectedIndex].value;
$.ajax({
type: "POST",
data: temp,
url: 'backup/',
success: function(data) {
alert("success");
$("#response").html(data);
}
});
})
以及如何强制此选择值在cookie中?仅仅通过views.py?中的这行代码来完成它:
table_length = request.COOKIES.get('table_length')
这是我的viwes.py:
def backup(request):
if request.is_ajax():
try:
table_length = request.COOKIES.get('table_length')
except Exception:
table_length = 10
if not page_length:
table_length = 10
//here i create the page with xsl and send it to a page to be shown
result = style.applyStylesheet(doc)
out = style.saveResultToString( result )
ok = mark_safe(out)
style.freeStylesheet()
doc.freeDoc()
result.freeDoc()
if request.method == 'POST':
return HttpResponse(ok)
else:
return render_to_response("show.html", {
'str': ok,
}, context_instance=RequestContext(request))
谢谢。
答案 0 :(得分:2)
对于ajax问题,您可以轻松使用
$.ajax({
type:"POT",
url :....,
data:{
.......
'csrfmiddlewaretoken': $("{% csrf_token %}").find("input").attr("value"),
},
dataType:"html",
error:function(data){},
success:function(data){
....
},
});
但你需要把
<input type="hidden" id="csrf_token" value="{{csrf_token}}"/>
你的HTML中的
如果您使用表单发送数据,则应使用csrf
<form action="/contact/" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>