Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.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 jQuery Ajax表单:下载文件或呈现错误的表单_Ajax_Django_Jquery_Django Forms - Fatal编程技术网

Django jQuery Ajax表单:下载文件或呈现错误的表单

Django jQuery Ajax表单:下载文件或呈现错误的表单,ajax,django,jquery,django-forms,Ajax,Django,Jquery,Django Forms,我希望Django创建的表单被jQuery/Ajax提交;如果成功,我希望下载一个文件,如果表格无效,我希望返回我的Django表格 我尝试过像这样“highjack”Django表单,将其转换为jQuery/Ajax: (javascript代码) 我的Django视图代码如下: # (if the form is invalid I return it (simple template containing only the form)) # if valid: response = Htt

我希望Django创建的表单被jQuery/Ajax提交;如果成功,我希望下载一个文件,如果表格无效,我希望返回我的Django表格

我尝试过像这样“highjack”Django表单,将其转换为jQuery/Ajax: (javascript代码)

我的Django视图代码如下:

# (if the form is invalid I return it (simple template containing only the form))
# if valid:
response = HttpResponse(mimetype='text/csv')
response['Content-Disposition'] = 'attachment; filename=filename.csv'
writer = csv.writer(response, delimiter=';')
writer.writerow(['...stuff written here...'])
return response
因此,我的文件是动态创建的CSV,这可能是需要注意的重要事项

请参阅我的jQuery代码中如何使用jqXHR对象检查返回的内容类型(欢迎更好地执行此操作)。我的问题是,如果成功,我无法让jQuery理解这是一个返回的文件,应该下载。可能吗?jQuery只是将数据作为文本处理

可能的解决办法:

  • 第一次调用ajax检查表单,如果可以,则调用“普通”(非ajax)下载文件
  • 忘记ajax,如果表单无效,则返回一个错误页面
尝试它允许类似Ajax的文件下载

尝试它允许类似Ajax的文件下载

# (if the form is invalid I return it (simple template containing only the form))
# if valid:
response = HttpResponse(mimetype='text/csv')
response['Content-Disposition'] = 'attachment; filename=filename.csv'
writer = csv.writer(response, delimiter=';')
writer.writerow(['...stuff written here...'])
return response