【问题标题】:Why does my Ajax call have an empty POST?为什么我的 Ajax 调用的 POST 为空?
【发布时间】:2014-10-13 01:11:50
【问题描述】:

当我提交 Ajax 请求以保存表单时,我得到一个空的 request.POST QueryDict。希望我只是因为缺乏 Ajax 经验而忽略了一些事情。以下是相关代码:

Ajax

<script>
    $(function() {
        [...]
        $(document).ajaxComplete(function() {
            [...]
            $(".inline-save").click(function() {
                    $.ajax({
                        url : '/webApp/saveForm/',
                        type : 'POST',
                        dataType : 'HTML',
                        contentType: 'application/x-www-form-urlencoded;charset=utf-8',
                        success : function(info) {
                            $("#info-display").html(info);
                        }
                    });
                });
            });
        });

我打算保存的表单是由另一个 Ajax 调用提出的,因此是 ajaxComplete 用法。在我的 urls.pyviews.py 中,我只是重定向到 save_view,它现在只打印 request.POST,它输出 &lt;QueryDict: {}&gt; - 一个空的 QueryDict .

我错过了什么?尽管有 several similar questions,但到目前为止我发现没有一个对我有帮助。

【问题讨论】:

  • 您没有发送任何数据。难怪
  • ... ... ... 哦。 /facepalm 好吧,至少我作为新手而不是作为有经验的人犯了这个错误。 :P
  • 它发生了!学习过程的一部分
  • fyi jquery 的.post 是一种更简洁的方式来编写 ajax POST。
  • @roippi 谢谢!我会调查的。 :)

标签: jquery python ajax django


【解决方案1】:

您可以将data : postData 添加到您的ajax

$.ajax({
    url : '/webApp/saveForm/',
    type : 'POST',
    data : postData,     // You need to add the data you want to send here
    dataType : 'HTML',
    contentType: 'application/x-www-form-urlencoded;charset=utf-8',
    success : function(info) {
        $("#info-display").html(info);
    }
});

【讨论】:

    【解决方案2】:

    我不太了解您的问题,但请尝试查看使用 Jquery 解释 Ajax 的文档。

    $.ajax({
      type: "POST",
      url: url,
      data: data,
      success: success,
      dataType: dataType
    });
    

    来源:http://api.jquery.com/jquery.post/

    尝试不同。例如:

      $(".inline-save").click(function() {
            $.ajax({
                            type: "POST",
                            url: "http://xxx.xxx.x.xx:PORT/webApp/saveForm",
                            dataType:'json',
                            data:$(".formName").serialize(),
                            success: function(msg) {
                                alert("Form supposedly saved",msg)
                                $("#info-display").html(info);
                            }
                      });
    }
    

    或者只是添加字段,看看它是否适合你:

    data:$(".formName").serialize(),
    

    data:{
       variableName : value,
       variableName2:value2
    }
    

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2021-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-15
      • 1970-01-01
      • 1970-01-01
      • 2015-08-14
      相关资源
      最近更新 更多