Jquery将空数据发送到Django

时间:2017-03-15 10:52:01

标签: javascript jquery django django-views python-3.6

信息:我正在使用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" }}>&laquo;</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" }}>&raquo;</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

我何时通过点击{'page':'1'}

收到a点击发送的词典

1 个答案:

答案 0 :(得分:1)

您的问题是因为send() method接受了许多数据类型,但它不接受对象。

您可以通过提供字符串来解决问题:

var val = 'page=' + $(this).val();

请注意此处val()的首选用途。

或者,如果您想将值作为JSON发送,则需要手动对其进行字符串化:

var val = JSON.stringify({ page: $(this).val() });