【问题标题】:Ajax is not sending data to django viewsAjax 没有向 django 视图发送数据
【发布时间】:2021-02-07 21:43:06
【问题描述】:

我只写了需要的东西。我是新手,所以请忽略问题质量:)。

我的 HTML ---

<div class="form-group row pt-3 d-flex justify-content-center">
            <div class="col-sm-10 d-flex justify-content-center">
                <button id="submit_pic" style="width: 70%;" type=""
                    class="btn btn-primary">Combine</button>
                <script>

                    $("#submit_pic").submit(function (e) {
                        e.preventDefault();
                        var csrfToken = $("input[name='csrfmiddlewaretoken']");
                        
                        $.ajax({
                            url: "{% url 'make_combine' %}",
                                //url: "/make_combine",
                            type: "POST", //-------here is problem-------
                            dataType: "json",
                            cache: true,
                            headers: {'csrfmiddlewaretoken': csrfToken.val()},
                            data: {"for_combine": response_send },
        
                            //"success": function (result) {
                            //    console.log(data);
                            //},
                        });
                        return false;
                    });

                    
                </script>
            </div>
         </div>

django views.py --

import json
def make_combine(request):
      combine_data7 = request.POST.get("for_combine")

我在互联网和 StackOverflow 上尝试了很多可用的技巧,但仍然收到此错误。它表明 combine_data7 是 NoneType ----

    AttributeError at /make_combine
    'NoneType' object has no attribute 'split'

谢谢妈妈/先生。

【问题讨论】:

  • 这里的response_send 是什么?它有什么价值吗?
  • 是的,它有价值。我已经通过 console.log(response_send) 检查了它。它具有base64图像的价值。

标签: django ajax nonetype postdata


【解决方案1】:

submit_pic 应该在 form id 内,而不是在 button id 内。试试下面的代码,它会 100% 工作。此外,在表单中提供enctype="multipart/form-data" 属性是一种很好的做法。

<div class="form-group row pt-3 d-flex justify-content-center">
    <form id='submit_pic' enctype="multipart/form-data">
        <div class="col-sm-10 d-flex justify-content-center">
            <button style="width: 70%;" type="" class="btn btn-primary">Combine</button>
        </div>
    </form>
</div>
<script>
    $("#submit_pic").on('submit', function (event) {
        event.preventDefault();
        var csrfToken = $("input[name=csrfmiddlewaretoken]").val();
        console.log(`Error ye raha === ${response_send}`)
        $.ajax({
            url: "{% url 'make_combine' %}",
            //url: "/make_combine",
            type: "post", //-------here is problem-------
            dataType: "json",
            cache: true,
            headers: {
                'csrfmiddlewaretoken': csrfToken
            },
            data: {
                "for_combine": response_send
            },

            //"success": function (result) {
            //    console.log(data);
            //},
        });
        return false;
    });
</script>

【讨论】:

  • 先生,我尝试了代码,但仍然遇到同样的错误。
  • 感谢兄弟的帮助。我没有完全复制代码(对此感到抱歉)。但我意识到并改变了它。效果很好。
  • 你也可以关注这个问题——stackoverflow.com/questions/64552622/…
猜你喜欢
  • 2021-07-29
  • 2014-10-08
  • 1970-01-01
  • 1970-01-01
  • 2013-02-20
  • 2015-02-03
  • 1970-01-01
  • 2018-06-18
  • 2020-04-13
相关资源
最近更新 更多