Jquery 向 Django 发送空数据
Jquery send empty data to Django
信息:我正在使用 python 3.6 和 Django 1.10.6。
我尝试发送一个简单的字典来更改我的页数,但我没有使用表格。所以当他们使用 XMLHttpRequest
时,我阅读了很多教程并且它有效。但在我的情况下,我只收到一个空查询。
Template.html:
<p> You select the page {{ page }} </p>
<ul class="pagination" >
<li><a href="#" value={{ page|add:"-1" }}>«</a></li>
<li><a href="#" value=0>1</a></li>
<li><a href="#" value=1>2</a></li>
<li><a href="#" value=2>3</a></li>
<li><a href="#" value=3>4</a></li>
<li><a href="#" value=4>5</a></li>
<li><a href="#" value={{ page|add:"1" }}>»</a></li>
</ul>
<script language="javascript">
$('ul.pagination li a').on('click', function(e){
e.preventDefault();
var val = {
'page': $(this).attr('value'),
}
var page = new XMLHttpRequest();
xhr.open('POST', '/index/', true);
xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8");
xhr.setRequestHeader('X-CSRFToken', '{{ csrf_token }}');
xhr.send(val);
})
</script>
Views.py:
def index(request):
page = request.POST.get('page', 0) #POST ARE YOU HERE ?
print('[TEST]', request.POST, page)
return render(request, "site/index.html",
{'page': page})
当我显示我的控制台时,我总是有空查询,所以这是正常的 page=0
。
控制台日志:
[TEST] <QueryDict: {}> 0
我什么时候可以通过点击 a
来接收像 {'page':'1'}
这样的命令
您的问题是因为 send()
method 接受多种数据类型,但不接受对象。
您可以通过提供一个字符串来解决您的问题:
var val = 'page=' + $(this).val();
注意此处首选使用 val()
。
或者,如果您想将值作为 JSON 发送,则需要手动将其字符串化:
var val = JSON.stringify({ page: $(this).val() });
信息:我正在使用 python 3.6 和 Django 1.10.6。
我尝试发送一个简单的字典来更改我的页数,但我没有使用表格。所以当他们使用 XMLHttpRequest
时,我阅读了很多教程并且它有效。但在我的情况下,我只收到一个空查询。
Template.html:
<p> You select the page {{ page }} </p>
<ul class="pagination" >
<li><a href="#" value={{ page|add:"-1" }}>«</a></li>
<li><a href="#" value=0>1</a></li>
<li><a href="#" value=1>2</a></li>
<li><a href="#" value=2>3</a></li>
<li><a href="#" value=3>4</a></li>
<li><a href="#" value=4>5</a></li>
<li><a href="#" value={{ page|add:"1" }}>»</a></li>
</ul>
<script language="javascript">
$('ul.pagination li a').on('click', function(e){
e.preventDefault();
var val = {
'page': $(this).attr('value'),
}
var page = new XMLHttpRequest();
xhr.open('POST', '/index/', true);
xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8");
xhr.setRequestHeader('X-CSRFToken', '{{ csrf_token }}');
xhr.send(val);
})
</script>
Views.py:
def index(request):
page = request.POST.get('page', 0) #POST ARE YOU HERE ?
print('[TEST]', request.POST, page)
return render(request, "site/index.html",
{'page': page})
当我显示我的控制台时,我总是有空查询,所以这是正常的 page=0
。
控制台日志:
[TEST] <QueryDict: {}> 0
我什么时候可以通过点击 a
{'page':'1'}
这样的命令
您的问题是因为 send()
method 接受多种数据类型,但不接受对象。
您可以通过提供一个字符串来解决您的问题:
var val = 'page=' + $(this).val();
注意此处首选使用 val()
。
或者,如果您想将值作为 JSON 发送,则需要手动将其字符串化:
var val = JSON.stringify({ page: $(this).val() });