javascript - 通过 Ajax 请求发送 OfficeJS 2D 数组
问题描述
我正在尝试在 OfficeJS 中发送一个“大”表:
从清单路由加载的 functionfile.html
<script>
(function (){
"use strict";
Office.initialize = function (reason) {
$(document).ready(function() {
$("#send-data-button").click(send_data);
});
};
function send_data() {
return Excel.run( function(context) {
var data = context.workbook.worksheets.getItem("SheetName")
.getRange("A1:K3673").load("values");
return context.sync().then( function() {
// 2d table is correctly seen
// $("body").append(data.values);
// Just gets lost in ajax call
$.ajax({
type: "GET",
url: mysite,
data: {"accessData": data.values},
}).done( function(success) {
$("body").append("All Done");
}).fail( function(error) {
$("body").append("Error == " + JSON.stringify(error));
});
return context.sync();
});
});
}
})();
</script>
<div> <button id="send-data-button"> Send </button></div>
但是我不知道如何发送这个,在背面我有一个烧瓶服务器捕获请求并希望我可以使用pandas.read_json
但无论我如何尝试发送这个我都会收到不同的错误。这是flask.request
when的打印输出data.values[0][0]
:
CombinedMultiDict([ImmutableMultiDict([('update_date', '43191'), ('accessData', 'Channel')]), ImmutableMultiDict([])])
当我尝试时,data.values[0]
我会得到一个值列表,这是我所期望的
CombinedMultiDict([ImmutableMultiDict([('update_date', '43191'), ('accessData[]', 'Channel'), ... <All my column headers>, ImmutableMultiDict([])])
但是当我尝试发送二维数组时,data.values
我收到一条错误消息ajax.fail
:
Error == {"readyState":0,"status":0,"statusText":"error"}
我也试过JSON.stringify(data.values)
并得到了同样的错误信息:
Error == {"readyState":0,"status":0,"statusText":"error"}
我什至尝试获取每一列并将它们转换为某种列表作为内部的嵌套键,accessData
但我得到了相同的错误消息。任何帮助将不胜感激。
解决方案
理想情况下,您应该将 getting-data-from-Excel 部分与 ajax 调用部分隔离开来。现在,两者交织在一起,这使得帮助调试变得更加困难,而且在概念上也不那么干净。
对于 Excel 部分,您应该能够:
function getExcelData(){
return Excel.run( function(context) {
var data = context.workbook.worksheets.getItem("SheetName")
.getRange("A1:K3673").load("values");
return context.sync()
.then(function() {
return data.values;
});
})
}
这将使您腾出时间去做:
getExcelData().then(function(values) {
$.ajax(...)
});
请注意,range.values
它只返回一个常规的二维数组,没什么特别的。因此,您可以独立于 Excel 调用尝试您的 ajax 调用(这是将它们分开的另一个原因)
推荐阅读
- javascript - TypeScript Angular - 将字符串添加到数字属性会导致值为零 (0)
- vba - 如何停止在 Application.Quit 方法之后仍然运行的 Excel 宏
- latex - Mathjax 无法正确渲染颜色框
- sql - 如何使用 sql server 在特定列 wrt 插入顺序上有所不同?
- php - 我正在将 json 数组写入文件。我越来越 [{ , , }][{ , , }][{ , , }]。我需要这个输出 [{ , , },{ , , },{ , , }]。有什么建议么?
- ios - Facebook 登录 + Google 登录 + Braintree Paypal 支付 - AppDelegate 问题
- android - Google Cloud Translation API 请求缺少有效的 API 密钥
- unit-testing - 模拟实例
> 在 Junit 中使用 Inject&Any 进行注释 - wordpress - 当我什至无法找到缓存的 *where* 时,如何清除激进的缓存?
- java - Weblogic 客户端收到 401 Unauthorized Kerberos 异常,但我的主类没有,你知道为什么吗?