【问题标题】:Jquery Ajax call with django使用 django 调用 Jquery Ajax
【发布时间】:2011-03-09 15:35:26
【问题描述】:

我有点卡在以下情况:

我正在使用 ajax 调用提交表单,我使用表单值在 django 中执行一些“查询”。当这种情况发生并且我得到正确的查询集时,它会以 csv 的形式向我提供 Http 响应。我设置了标题和获取“将文件另存为”窗口所需的所有内容...不幸的是,这不会发生,因为 ajax 调用将响应放入 div 中。

这是代码:

if (vsc=='True'){
    ajax_loader();
 // add pdf, csv $.ajax (todo)
        $.ajax({ 
  type: "POST",
        url: "./test",
            dataType: 'text',
  success: test,
  data: {host: ho, log: lo, severity: se, datetimestart: dts, datetimeend: dte, enabled: ena, csv: vsc, pdf: fdp}

       });

所以在这个 ajax 函数中调用 url ./test。在该 url 中,我进行了一些对象过滤,然后创建了一个 http 响应对象并将其发回。成功后,我想“将文件另存为”,但此时我不知道该怎么做。我成功地在我的 html 页面 ./test 的 div 中显示响应,但“文件另存为”从未出现。

我的 Django 视图:

def export_csv(request,queryset)
# do some filtering on queryset and create a csv
response = HttpResponse(''.join(csv_export), mimetype='text/csv')
response['Content-Disposition'] = 'attachment; filename=customreportexport.csv'
return response

这是我的观点,一切都应该正常,我认为这真的是 ajax 调用...在“成功”时我必须做一些事情,所以它会弹出“文件另存为”,只是我不知道如何。我已经尝试了一些 iframe,但是我必须将“源”作为 url 提供,这是不可能的,因为 ajax 调用会发布参数等......对此有什么帮助吗?以前我知道在某种语言中有一种叫做'IsUpload = true'的东西,太糟糕了它不在jquery ajax中......

希望收到你们的来信

【问题讨论】:

  • 看来您不接受建议!
  • 他的意思是你在这个网站上问了6个问题,并且没有接受提供的任何答案。网站上的机制和暗示的礼貌是,如果有任何可以被认为是正确的,您应该接受对您的问题的最佳正确答案。

标签: jquery ajax django upload


【解决方案1】:

听起来这不应该是一个 Ajax 请求 - 如果您只是发布该表单,那么用户将转到 csv url 并被提示下载文件。

【讨论】:

  • 它不会...我在我的表单上单击提交...我认为它需要生成一个 csv,它返回一个 HTTPResponse 对象,但它没有打开“文件另存为” ,你应该怎么做?这在 jquery/ajax 中必须是可能的,在 ExtJS 中是可能的......你能给我一个例子,你应该如何知道 POST 值(参数)可能是不同的数组,因为它是“选择框”......
  • 碎纸片是对的。 Ajax 在这里完全无关紧要。
  • 它不是...我的内容正在页面内刷新...我提交了相同的表单,只有一个复选框确认是否为 csv。当我返回响应时,它将返回到 ajax 调用,而不是外部链接......所以它不是无关紧要的。我为此做了一个解决方案,我只是临时制作一个文件,并在临时文件的链接上使用 iframe 进行 ajax 调用......这是在我的情况下可以解决的唯一方法。太糟糕了 jquery 错过了像 ExtJS 中的 IsUpload = True 之类的东西
猜你喜欢
  • 1970-01-01
  • 2013-04-14
  • 2021-10-21
  • 2016-10-23
  • 2012-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多