Django 1.5+;django ajax上载小部件-jQuery$.ajax将成功响应作为错误处理
我使用的是django 1.5+夹层+。我对DjangoAjax上传小部件有问题 所以,当我试图选择表单中的文件时,我有一个上载错误。正如我所理解的(通过使用js调试器)——问题在于jQuery使用错误处理程序来处理成功的响应 下面是处理ajax上传的视图:Django 1.5+;django ajax上载小部件-jQuery$.ajax将成功响应作为错误处理,django,google-chrome,google-chrome-extension,ripple,mezzanine,Django,Google Chrome,Google Chrome Extension,Ripple,Mezzanine,我使用的是django 1.5+夹层+。我对DjangoAjax上传小部件有问题 所以,当我试图选择表单中的文件时,我有一个上载错误。正如我所理解的(通过使用js调试器)——问题在于jQuery使用错误处理程序来处理成功的响应 下面是处理ajax上传的视图: @csrf_exempt @require_POST def upload(request): form = UploadedFileForm(data=request.POST, files=request.FILES) if f
@csrf_exempt
@require_POST
def upload(request):
form = UploadedFileForm(data=request.POST, files=request.FILES)
if form.is_valid():
uploaded_file = form.save()
data = {'path': uploaded_file.file.url,}
return HttpResponse(simplejson.dumps(data))
else:
return HttpResponseBadRequest(simplejson.dumps({'errors': form.errors}))
我还尝试了python调试器,因此文件上载会导致以下行运行:
return HttpResponse(simplejson.dumps(data))
所以,这意味着文件上传成功(我也检查了目标文件夹-它包含这个文件)。据我所知,使用HttpResponse
意味着请求的状态是200。因此,jQuery运行error
处理程序,而不是success
。所以这意味着当jQuery尝试处理数据时可能会出现问题,但下面是js代码:
$.ajax(this.$element.data('upload-url'), {
iframe: true,
files: this.$element,
processData: false,
type: 'POST',
dataType: 'json',
success: function(data) { self.uploadDone(data); },
error: function(data) { self.uploadFail(data); }
});
因此,processData:false
这里没有处理
你怎么认为-什么可能导致问题?如何修复它
添加:
我将错误处理程序更改为
AjaxUploadWidget.prototype.uploadFail = function(jqXHR, textStatus, errorThrown){
if(this.options.onError) {
this.options.onError.call(this);
} else {
console.log('Upload failed:');
console.log(jqXHR, textStatus, errorThrown);
}
};
所以,js控制台显示它是“parsererror”
问题已解决
我尝试console.log(jqXHR.responseText)错误处理程序中的代码>,请参见以下内容:
if (window.top.ripple) { window.top.ripple("bootstrap").inject(window, document); }{"path": "/static/media/ajax_uploads/c351360b8aa7417b89f51cdd9e9057ae-Koala.jpg"}
但我必须看到这一点:
{"path": "/static/media/ajax_uploads/c351360b8aa7417b89f51cdd9e9057ae-Koala.jpg"}
所以,我关闭了我的Chrome中的Ripple插件,一切正常(o_o:-)
但是很奇怪,一些插件会破坏前端js的工作。你对此有什么想法吗