首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Javascript Ajax调用调用MVC操作下载对象

使用Javascript Ajax调用调用MVC操作下载对象
EN

Stack Overflow用户
提问于 2012-10-31 09:36:56
回答 3查看 5.8K关注 0票数 1

我已经创建了一个简单的MVC控制器操作,它创建一个简单的ics (日历)项,并通过控制器操作将其发送回来。如下所示:

代码语言:javascript
复制
    public object GenerateICS(int myID)
    {
        iCalendar iCal = new iCalendar();            
         Event evt = iCal.Create<Event>();
        Uri eventLink = new Uri("http://localhost:");
        evt.IsAllDay = false;

       evt.Start = new iCalDateTime(DateTime.Now);
       evt.End = new iCalDateTime(DateTime.Now.AddDays(3));

       evt.Summary = "MySummary";
       evt.Url = eventLink;
       evt.Description = "You know it";         

      Response.ContentType = "text/v-calendar";
      Response.AddHeader("content-disposition", "attachment; filename=" + "Event" + ".ics");
      iCalendarSerializer serializer = new iCalendarSerializer(iCal);
      string result = serializer.SerializeToString(iCal);
      Response.Write(result);          
        return Response;
    }

因此,随着网站的运行,如果我访问:

代码语言:javascript
复制
http://localhost:21312/GenerateICS?myID=1 

这将生成ics文件服务器端并将其传递回客户端,因此您将收到一个“您是否要从本地主机打开blah.ics?”。这就是我想要的。

我的问题是如何通过从javascript执行它来实现完全相同的效果。我有以下ajax调用:

代码语言:javascript
复制
 $.ajax({
                url: "app/GenerateICS",
                data: { myID: 1 },
                success: function (data) {
                    //call is successfully completed and we got result in data
                    alert(data);
                },
                error: function (xhr, ajaxOptions, thrownError) {
                    //some errror, some show err msg to user and log the error  
                    alert(xhr.responseText);

                }
            });

这完美地执行了mvc控制器。但是它将ics响应返回给成功函数。如何使用ajax调用控制器,但让它来下载文件,正如我所描述的那样,当您手动执行此操作时,它是如何做到的?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-31 10:15:45

感谢@heads5150的链接。

这只是使用以下命令设置浏览器位置的事实:

代码语言:javascript
复制
document.location.href = "app/GenerateICS?...";
票数 1
EN

Stack Overflow用户

发布于 2012-10-31 09:59:44

在您的ajax成功案例中,放入以下内容

代码语言:javascript
复制
  Window.location.href='yourICSfileLink';

这会在ajax成功创建文件时将浏览器重定向到打开,或者在本例中下载ics文件,请注意,每次ajax成功时都会发生这种情况

票数 0
EN

Stack Overflow用户

发布于 2012-10-31 10:28:19

我只是在寻找js的下载,答案通常与创建iframe并通过它进行操作有关。甚至还有一些jquery插件可以做到这一点。一些例子:

Download File Using Javascript/jQuery

http://johnculviner.com/category/jQuery-File-Download.aspx

如果你在谷歌上搜索,你可以找到更多关于这个主题的信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13150096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档