【问题标题】:Unable to send ajax json post request to django view无法将 ajax json 发布请求发送到 django 视图
【发布时间】:2015-10-16 15:01:47
【问题描述】:

我正在尝试使用 ajax 发送 json

阿贾克斯:

$.ajax({
                 type:"POST",
                 url:"../create_folder/",
                 data: {
                        //csrfmiddlewaretoken: "{{ csrf_token }}",
                        sharedfolder // from form
                        },
                        contentType: "application/json",
    dataType: "json",
    success: function(data) {
        debugger;
        $("#folder_create").dialog('close');
        $("#folder-details").pqGrid("refreshDataAndView" );
    },
    error: function(data){
        debugger;
        alert("fail");

            }
        });
            return false;

到一个视图:

@csrf_exempt
def create_folder(request):
  c = {}
  c.update(csrf(request))
  data = request.POST["sharedfolder"]
  print type(data)
  return HttpResponse(sf,content_type="application/type")

我收到此错误:

MultiValueDictKeyError at /create_folder/ "'sharedfolder'" 请求 方法:GET 请求地址:http://localhost:8000/create_folder/Django 版本:1.6.1 异常类型:MultiValueDictKeyError 异常 值:“'sharedfolder'”异常 位置:/usr/local/lib/python2.7/dist-packages/django/utils/datastructures.py 在 getitem 中,第 301 行 Python 可执行文件:/usr/bin/python Python 版本:2.7.6 Python 路径:
['/home/celestial/Documents/celestial_NAS', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/python2.7/dist-packages/ubuntu-sso-client'] 服务器 时间:2015 年 7 月 26 日星期日 10:30:24 +0000

可能是什么错误?

【问题讨论】:

  • 您似乎收到了GET 对服务器的请求?
  • 您能提供表格吗?

标签: python ajax django


【解决方案1】:

您似乎没有正确地将 sharedfolder 参数传递给 AJAX 脚本,因此当您尝试使用 data = request.POST["sharedfolder"] 访问它时,您会收到 Key Exception 错误。

通常在 AJAX 调用中使用 data 属性时,您会使用键值对,例如

sharedfolder: sharedfoldervalue

其中sharedfoldervalue是从表单提交中获得的。

【讨论】:

  • 这是我的共享文件夹 json
  • { "sharedFolder": { "sharedFolderName" :"test1", "ownerName" :"amit", "volumeName" :"temp", "description" :"这只是描述部分", “uniqueID”:“0”,“public”:“yes”,“服务”:{“wiki”:“yes”,“cifs”:“yes”,“ftp”:“yes”,“nfs”:“是”,“rb”:“是”,“ms”:“是”,“afp”:“是”,“webdav”:“是”,“加密”:“是”},“备份”:{“ rName":"test2", "rPasswd":"testing2" } } }
  • 我所做的更改 data: data: { //csrfmiddlewaretoken: "{{ csrf_token }}", sf : sharedfolder // from form }, in views.py data = request.POST.get(' sf') 现在我收到如下错误:/create_folder/ 全局名称 'sf' 处的 NameError 未定义
【解决方案2】:

看来你不是通过AJAX发帖。我的意思是你的回溯中有GET请求。所以request.POST将是{}。这就是你收到这个错误的原因。所以检查

<form >
whatever
<button type="submit"> or even no type attribute
</form>

上面改为

<button type="button">

【讨论】:

    【解决方案3】:

    几天前我收到了这个错误。

    使用 request.POST.get("sharedfolder") 的 request.POST["sharedfolder"]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-21
      • 2019-10-27
      • 1970-01-01
      • 2020-10-30
      • 1970-01-01
      • 2014-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多