Post 数据到服务器使用 Excel 插件
Post data to server using Excel Add-in
该项目是一个 Excel Web 插件。
我目前 运行 Visual Studio 上的加载项处于调试模式,并且想 post 将数据发送到服务器。数据通过 ajax 调用发送。
发布数据代码:
Excel.run(function (context) {
let workbook = context.workbook;
let worksheets = workbook.worksheets;
let Sheet = worksheets.getItem("SheetName");
var tableRange = Sheet.getRange("Data");
tableRange.load("values");
return context.sync().then(function () {
$.ajax({
contentType: 'application/json; charset=utf-8',
dataType: 'text',
type: 'POST',
url: 'DocFile/Post',
crossDomain: true,
data: JSON.stringify({
file:tableRange.values
})
,
success: function (r) {
console.log(r);
alert("Successfully saved Home office assumptions for Space");
},
failure: function (r) {
alert(r);
}
});
加载项运行时弹出如下错误信息:
Error Message
从这个错误消息来看,您似乎正在将数据发布到跨域服务器。
在 Excel JS 解决方案中,我们有由浏览器强制执行的同源策略,以防止从一个域加载的脚本从另一个域获取或操作网页的属性。这意味着,默认情况下,请求的域 URL 必须与当前网页的域相同。
找到该文档
一个可能的解决方案是将这个新的 appdomain 添加到清单中,您可以在此处找到文档
https://docs.microsoft.com/en-us/office/dev/add-ins/reference/manifest/appdomains
该项目是一个 Excel Web 插件。
我目前 运行 Visual Studio 上的加载项处于调试模式,并且想 post 将数据发送到服务器。数据通过 ajax 调用发送。
发布数据代码:
Excel.run(function (context) {
let workbook = context.workbook;
let worksheets = workbook.worksheets;
let Sheet = worksheets.getItem("SheetName");
var tableRange = Sheet.getRange("Data");
tableRange.load("values");
return context.sync().then(function () {
$.ajax({
contentType: 'application/json; charset=utf-8',
dataType: 'text',
type: 'POST',
url: 'DocFile/Post',
crossDomain: true,
data: JSON.stringify({
file:tableRange.values
})
,
success: function (r) {
console.log(r);
alert("Successfully saved Home office assumptions for Space");
},
failure: function (r) {
alert(r);
}
});
加载项运行时弹出如下错误信息: Error Message
从这个错误消息来看,您似乎正在将数据发布到跨域服务器。 在 Excel JS 解决方案中,我们有由浏览器强制执行的同源策略,以防止从一个域加载的脚本从另一个域获取或操作网页的属性。这意味着,默认情况下,请求的域 URL 必须与当前网页的域相同。
找到该文档一个可能的解决方案是将这个新的 appdomain 添加到清单中,您可以在此处找到文档 https://docs.microsoft.com/en-us/office/dev/add-ins/reference/manifest/appdomains