繁体   English   中英

使用Vanilla JS将AJAX请求发送到Django视图

[英]Send AJAX request to Django view with vanilla JS

我正在尝试使用香草JS向Django视图发送GET AJAX请求。 is_ajax()通过,但是我无法正确检索请求对象。

这是我的JS代码。 有/无JSON.stringify(data)不起作用。

document.querySelector('#testForm').onsubmit = () => {
      let data = {category : 'music'};

      const request = new XMLHttpRequest();
      request.open('GET', 'test/', true);
      request.setRequestHeader('X-Requested-With', 'XMLHttpRequest');

      request.onload = () => {
        const data = JSON.parse(request.responseText);
        console.log(data);
      }

      request.send(data);
      return false;
});

这是我的Django视图:

def test(request):
    if request.is_ajax():
        print('Yes!')
        data = {'category': request.GET.get('category', None)}
        return JsonResponse(data)
    else:
        raise Http404

它打印Yes! 到终端,但我在控制台中返回了{category: null}

此JQuery代码有效,我得到了预期的{category: "music"}响应:

$.ajax({
        url: 'cart/',
        type: 'GET',
        data: data,
        dataType: 'json',
        success: function (data) {
          console.log(data);
        }
      });

我想知道香草JS代码或Django视图中缺少什么。

GET请求不能具有主体,因此request.senddata参数将被忽略。 您应该使其成为URL本身的一部分:

request.open('GET', 'test/?category=music', true);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM