我的目标是从Angularjs处理的动态内容中下载csv文件。该文件由Django构建在服务器端。
使用Django很容易获得文件。我们只需要一个视图来返回一个HttpResponse(doc)。在客户端,我可以通过使用$window.location.href
更改浏览器的网址来获取它。
如果我有一些参数,我可以使用search
(Mozilla doc)将它们作为查询参数提供给window.location。
但是我必须将大量数据传递给服务器,所以我不能使用查询参数。 (我受到网址最大长度的限制)。
使用AngularJS'$http
,我们可以为GET设置更多配置,包括数据参数:doc。该数据“将作为请求消息数据发送”,它不被编码到URL。我想用它。
因此,如果我可以使用$window.location.href
调用设置此数据,我的pb将会得到解决。有可能吗?
如果我使用Angular的$http
触发GET,则Django的HttpResponse
不会被解释为响应,它会被截取为success
子句中的数据。我该如何使用它?
您是否看到了另一种创建和下载动态文件的策略?
修改:我去了with this获取csv文件。
其他策略理念:
非常感谢!
答案 0 :(得分:1)
如果您想根据参数从服务器请求数据,您应该将其作为GET 查询参数发送,然而如果您发送了大量参数,则应发送他们在GET 请求正文(transformRequest
字段)中。 Angular适合处理JSON,因此如果您必须处理其他数据(例如XML,CSV),则必须将其转换为JSON。 Angular在transformResponse
配置对象中提供了$http
和$window.location.href
函数(see here)来完成这项工作(您必须自己编写逻辑)。
$http.get
不合适,因为它将浏览器窗口重定向到指定位置(通常需要一些html),这会返回数据,但是你无法在JS / Angular上下文中与它进行交互
我强烈建议您使用{{1}}并根据需要转换数据。也许你找到一个为你处理转换的库。