javascript - 将数据参数(而不是查询参数)提供给 window.location.href ?创建动态文件

标签 javascript angularjs django

我的目标是从 Angularjs 处理的动态内容中下载 csv 文件。该文件是由 Django 在服务器端构建的。

使用 Django 获取文件很容易。我们只需要一个 View 来返回 HttpResponse ( doc )。在客户端,我可以通过使用 $window.location.href 更改浏览器的 url 来获取它。

如果我有一些参数,我可以使用 search 将它们作为 window.location 的查询参数 ( Mozilla doc )。

但是,我必须将大量数据传递到服务器,因此无法使用查询参数。 (我受到网址最大长度的限制)。

使用 AngularJS 的 $http,我们可以为 GET 设置更多配置,包括数据参数:  doc 。该数据是“作为请求消息数据发送的”,它没有编码到 url 中。我想用它。

因此,如果我可以使用 $window.location.href 调用设置此数据,我的 pb 就会得到解决。这可能吗?

如果我使用 Angular 的 $http 触发 GET,Django 的 HttpResponse 不会被解释为响应,而是作为数据被拦截到 success子句。我该如何使用它?

您是否看到另一种创建和下载动态文件的策略?

编辑:我去了 with this对于 csv 文件。

其他策略想法:

非常感谢!

最佳答案

如果您想根据参数从服务器请求数据,您应该将它们作为 GET 查询参数发送,但是如果您发送大量参数,您应该发送它们位于 GET 请求正文($http data 字段)中。 Angular 适合处理 JSON,因此如果您必须处理其他数据(例如 XML、CSV),则必须将其转换为 JSON。 Angular 在 $http 配置对象中提供了一个 transformRequest 和一个 transformResponse 函数( see here )来做到这一点(你必须编写不过你自己的逻辑)。

$window.location.href 不合适,因为它将浏览器窗口重定向到指定位置(通常需要一些 html),这会返回数据,但您无法进行交互在 JS/Angular 上下文中使用它。

我强烈建议您使用$http.get并根据需要转换数据。也许您会找到一个可以为您处理转换的库。

<小时/>

关于javascript - 将数据参数(而不是查询参数)提供给 window.location.href ?创建动态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35919914/

相关文章:

javascript - 如何让 Firebug 分析器将函数显示为非匿名

javascript - “Angular ”未定义 - 为什么不定义?

python - Django GROUP BY strftime 日期格式

django - 确保 django 模型已正确保存

javascript - 将 PHP 类对象传递给 Javascript 并在 Javascript 函数中访问其属性

javascript - JSON 总是以 [null

node.js - 引导一个应用程序,触发一个好主意吗?

angularjs - 将焦点设置为 ng-click 内的 Angular 元素

python - Django Queryset - 获取最后一个相关对象并按其数据过滤

javascript - 根据条件在 PHP 中包含 CSS 和 JS