Excel使用Java脚本添加:获取请求卡在“待处理”中

时间:2019-07-04 09:01:34

标签: javascript fetch-api office-addins excel-addins

我正在使用Visual Studio模板编写Excel加载项。在我的Javascript文件中,我有一个名为loadSampleData的函数,其中使用了fetch(url)从API请求一些数据。如果我在Office.initialize中调用loadSampleData(),则此方法可以很好地工作。但是我只需要在用户输入(选中某些复选框并按下搜索按钮)后才调用该函数,因为URL必须根据用户的选择进行更改。问题是,如果我在“搜索”按钮的.click()中具有功能,它将开始执行,但获取请求仍处于待处理状态。

我使用了Office加载项调试器来仔细查看正在发生的事情。如果我单击搜索按钮,则发送请求,但永远保持“待处理”状态。如果我使用调试器的控制台发出完全相同的请求(相同的url,相同的标头),它将获得预期的响应。我不知道为什么会这样。这是我的代码:

Office.initialize = function (reason) {
        $(document).ready(function () {

            //loadSampleData(); //this works perfectly fine

            $("#bt_search").click(loadSampleData); //this doesn't 

        });
    };

function loadSampleData() {
        Excel.run(function (ctx) {

            const currentWorksheet = 
            ctx.workbook.worksheets.getActiveWorksheet();
            var url = buildURL();
            fetch(url).then(function (response) {
                return response.json();
            }).then(function (myJson) {

                    //... do stuff with myJson and change row content ...

                    return ctx.sync();

                });
            });
    }

0 个答案:

没有答案