我正在尝试使用django中的ajax上传图片。当我发布没有ajax的常规方式时,它会按预期上传。但是当我使用ajax上传时,我获得了成功函数,但是我的表单在视图中无效,而我得到的数据来自视图中的else条件:
{“image”:[“此字段为必填项。”]}
JS:
$('#settings-dialog #background-settings #image-device #upload').on('click', function() {
var modify_frm = $('#settings-dialog #background-settings #image-device #upload-form');
$.ajax({
type: modify_frm.attr('method'),
url: modify_frm.attr('action'),
data: modify_frm.serialize(),
dataType: 'json',
success: function(data) {
$('#settings-dialog #background-settings #image-device #upload').text(data);
},
error: function(data) {
$('#settings-dialog #background-settings #image-device #upload').text(JSON.stringify(data));
}
});
});
我在这里缺少什么?你能帮我解决一下吗?
使用ajax查看无效:
@login_required(login_url='/custom123user/login')
def admin_page_snap_add(request, page_id):
if not request.user.is_admin:
return render(request, 'admin_login_invalid.html')
else:
page = Page.objects.get(id=page_id)
if request.user == page.user:
if request.is_ajax() and request.POST:
form = PageSnapForm(request.POST, request.FILES)
if form.is_valid():
page_snap = form.save(commit=False)
page_snap.page = page
page_snap.user = page.user
page_snap.save()
data = 'Uploaded'
return HttpResponse(json.dumps(data), content_type='application/json')
else:
data = form.errors
return HttpResponse(json.dumps(data), content_type='application/json')
else:
raise Http404
else:
return render(request, 'wrong_user.html')
答案 0 :(得分:0)
使用AJAX上传图片并不像普通上传那样简单。
请参阅此问题:How to send FormData objects with Ajax-requests in jQuery?
然后有一个名为jQuery Form Plugin的jQuery插件。它会为您处理所有肮脏的工作,因此您不必担心将文件绑定到表单等等。这是:http://malsup.com/jquery/form/