Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 1.5+;django ajax上载小部件-jQuery$.ajax将成功响应作为错误处理_Django_Google Chrome_Google Chrome Extension_Ripple_Mezzanine - Fatal编程技术网

Django 1.5+;django ajax上载小部件-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

我使用的是django 1.5+夹层+。我对DjangoAjax上传小部件有问题

所以,当我试图选择表单中的文件时,我有一个上载错误。正如我所理解的(通过使用js调试器)——问题在于jQuery使用错误处理程序来处理成功的响应

下面是处理ajax上传的视图:

@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的工作。你对此有什么想法吗