Par*_*dra 0 django ajax json django-views
我正在尝试使用对视图的ajax调用从我的模板发送动态创建的JSON数据.我能够通过ajax调用生成并传递JSON数据,但无法在视图中读取相同内容.我阅读了很多关于此的文章和stackoverflow帖子,但没有为这个简单的任务工作.以下是我的Ajax调用:
$(document).ready(function() {
$('#applybtn').click(function(){
var selectedpackages = [];
{% for package in packages %}
if($("input[name=package{{forloop.counter}}]").is(':checked')){
type = $("input[name=package{{forloop.counter}}]:checked").attr('id');
var Obj = {}
Obj['pkgid'] = {{package.id}};
Obj['type'] = type;
selectedpackages.push(Obj);
}
{% endfor %}
var mystring = JSON.stringify(selectedpackages);
$.ajax({
url:"/ApplyCode/",
type:"GET",
data:mystring,
dataType: "json",
contentType: "application/json",
success: function(data){
alert(data);
}
});
});
});
Run Code Online (Sandbox Code Playgroud)
在上面给出的代码中,您可以忽略for循环部分,因为它只是循环遍历某些包并检查该页面上的用户选择了哪个包,并相应地生成要作为JSON对象传递的字典.此外,我检查了mystring变量中生成的数据(使用alert(mystring);),然后将其发送到视图并且它具有所需的数据.
以下是我的观点代码:
import json
def applycode(request):
context=RequestContext(request)
pkgid=""
if request.method=='GET':
selectedpackages = json.loads(request.body)
else:
pass
return HttpResponse(selectedpackages)
Run Code Online (Sandbox Code Playgroud)
我确信在"selectedpackages"变量中获取JSON数据时,我遗漏了一些东西.我尝试了很多其他方法,但没有任何效果.在这里,我只想获取数据,而不是想访问相同的每个元素.任何帮助表示赞赏.
request.body如果您GET提出请求,它将不会包含任何内容,这将把所有内容都放在URL本身中.您需要更改AJAX调用以执行以下操作POST:
$.ajax({
// ...
type:"POST",
// ...
});
Run Code Online (Sandbox Code Playgroud)
然后相应地修改您的视图代码:
if request.method == 'POST':
selectedpackages = json.loads(request.body)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3298 次 |
| 最近记录: |