如果有人能更好地解释excel的addin缓存javascript函数的内部工作原理,我真的很好奇吗?我在我自己的内部网站上运行一个烧瓶应用程序,后面是SSL证书。我的插件拉入了这个functionfile.html
,并将一个ajax调用回mysite:
<script>
// After the Office library builds, it will look for Office.initialize
// which must be passed a function. It doesnt have to do anything though.
Office.initialize = function (reason){
$(document).ready(function(){
registerBindings();
});
}
function getData(){
return Excel.run( function (context) {
// request bindings
var state_nbr = context.workbook.bindings.getItem("state_nbr").getRange().load("values");
// and the rest for the ajax call
return context.sync().then( function () {
$.ajax({
type: "GET",
url: "https://example.com/excel/function",
data: {
"state_nbr": state_nbr.values[0][0]
}
}).done( function (data){
context.workbook.bindings.getItem("test").getRange().values = [["done"]];
return context.sync();
}).fail( function (result){
context.workbook.bindings.getItem("test").getRange().values = [["fail"]];
return context.sync();
});
});
});
}
</script>
当我点击我的按钮时,我可以看到具有正确有效负载的请求转到example.com/excel/function
,这是一个烧掉一堆CLI垃圾(数百个日志记录命令)的烧瓶路径。
然而,奇怪的是,在每次单击按钮后第一次点击之后我没有得到任何新的ajax请求,我只收到functionfile.html
的请求。但是SheetA1
仍然会弹出“完成”。
我认为这只是将结果存储在缓存中,但即使烧瓶在调试模式下运行,如果我更改functionfile.html
,说[["done"]]
到[["finished"]]
,也没有新的ajax调用是在我的日志中检测到。但是表格更新了吗?!