无法将 ajax json 发布请求发送到 django 视图
Posted
技术标签:
【中文标题】无法将 ajax json 发布请求发送到 django 视图【英文标题】:Unable to send ajax json post request to django view 【发布时间】: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
对服务器的请求?
您能提供表格吗?
【参考方案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"]
【讨论】:
以上是关于无法将 ajax json 发布请求发送到 django 视图的主要内容,如果未能解决你的问题,请参考以下文章
如何将 JQuery AJAX 请求中的数据发送到 Node.js 服务器