找回密码
 立即注册

QQ登录

只需一步,快速开始

danceofwind

金牌服务用户

1

主题

5

帖子

51

积分

金牌服务用户

积分
51

微信认证勋章

最新发帖
danceofwind
金牌服务用户   /  发表于:2016-1-21 22:51  /   查看:7462  /  回复:9
开发中要将Excel文档导入导出,因此测试了一下ExcelIOSample这个例子,
但因为后端是用Java开发的,因此在导入导出时只能利用ASP.NET发布的服务,网页和服务在同一服务器,但访问端口不同,
导出功能正常,但在导入时出现了跨域的问题,期待能有一个解决方案,导入功能对于目前的项目至关重要,谢谢!

出错信息如下图所示:
测试网页地址是: http://localhost:62963/Home/Index
服务地址是:http://localhost:10787/xsapi/Import
无标题2.jpg (95.27 KB, 下载次数: 177)

9 个回复

倒序浏览
CCKan
银牌会员   /  发表于:2016-1-22 10:28:00
沙发
一般来说没有问题的呀,你把你导入导出代码所在文件发上来我们看一看。
回复 使用道具 举报
danceofwind
金牌服务用户   /  发表于:2016-1-22 10:34:00
板凳
一般来说没有问题的呀,你把你导入导出代码所在文件发上来我们看一看。
CCKan 发表于 2016-1-22 10:28:00


就是你们官方的例子啊,服务端用的是GrapeCity.ExcelService这个,客户端用的是ExcelIOSample,只是把ExcelIOSample里面的importUrl指向了GrapeCity.ExcelService的服务地址,其他都没改
回复 使用道具 举报
danceofwind
金牌服务用户   /  发表于:2016-1-22 11:51:00
地板
回复 3楼danceofwind的帖子

示例代码中通过iframe提交上传进行Import的代码确实存在跨域问题,
改用Ajax方式上传,问题得以解决。

  1. $("#import_excel").click(function () {
  2.         var files = $('#import_excel_file').prop('files');
  3.         var fd = new FormData();
  4.         fd.append('files[]', files[0]);
  5.         fd.append('ExcelOpenFlags', 0);
  6.         fd.append('Password', '');

  7.         $.ajax({
  8.             url: getImportServerUrl(),
  9.             type: "POST",
  10.             data: fd,
  11.             processData: false,
  12.             contentType: false,
  13.             success: function (response) {
  14.                 var spreadObj = response.spread;
  15.                
  16.                 if (spreadObj) {
  17.                     var spread = $("#ss").data("spread");
  18.                     spread.fromJSON(spreadObj);
  19.                     updateSheetList();
  20.                     hideLoading();
  21.                     spreadObj = null;
  22.                 } else if (spreadJson.error) {
  23.                     hideLoading();
  24.                     alert(spreadJson.error);
  25.                 }
  26.             },
  27.             error: function (jqXHR, textStatus, errorMessage) {
  28.                 hideLoading();
  29.                 console.log(errorMessage);
  30.             }
  31.         });
  32. }
复制代码

评分

参与人数 1金币 +999 收起 理由
gw0506 + 999 解决SpreadJS Sample中的跨域问题

查看全部评分

回复 使用道具 举报
CCKan
银牌会员   /  发表于:2016-1-22 12:04:00
5#
回复 使用道具 举报
gw0506
超级版主   /  发表于:2016-1-22 12:17:00
6#
总的来说,我们的demo考虑的绝大多数场景下确实不存在跨域的隐患,所以用了iframe,考虑不够周全。
这是一个web技术问题,spreadjs本身确实也没有什么方案去控制这个点。

非常感谢你帮助我们提供了一个解决方案,我们向你送出1000GCDN金币以示心意。你可以兑换GCDN的礼品。

回复 3楼danceofwind的帖子

示例代码中通过iframe提交上传进行Import的代码确实存在跨域问题,
改用Ajax方式上传,问题得以解决。

[code]$("#impo
danceofwind 发表于 2016-1-22 11:51:00
回复 使用道具 举报
danceofwind
金牌服务用户   /  发表于:2016-1-22 21:14:00
7#
谢谢金币,
最好还是能发布一个Java版本的ExcelIO,有时需求是必须在非Windows平台部署的。
回复 使用道具 举报
gw0506
超级版主   /  发表于:2016-1-25 09:18:00
8#
我们是在考虑做一个不依赖后台的ExcelIO,还在努力中~
回复 使用道具 举报
danceofwind
金牌服务用户   /  发表于:2016-1-27 15:03:00
9#
我们是在考虑做一个不依赖后台的ExcelIO,还在努力中~
gw0506 发表于 2016-1-25 9:18:00


加油哦,KendoUI还处于Beta的SpreadSheet已经支持浏览器端直接导入和导出Xlsx了,就是其他功能比你们的弱
回复 使用道具 举报
gw0506
超级版主   /  发表于:2016-1-27 16:39:00
10#
他们在设计KendoUI的时候,认为最重要的跨平台。我们因为有Spread的基础,所以第一要务是功能。
有你们这样实在而且精通行业的用户在,我们会一直努力下去的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部