Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript Ajax调用调用MVC操作下载对象_Javascript_Jquery_Ajax_Asp.net Mvc - Fatal编程技术网

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

使用Javascript Ajax调用调用MVC操作下载对象,javascript,jquery,ajax,asp.net-mvc,Javascript,Jquery,Ajax,Asp.net Mvc,我创建了一个简单的MVC控制器操作,它创建了一个简单的ics(日历)项,并通过控制器操作将其发送回。详情如下: public object GenerateICS(int myID) { iCalendar iCal = new iCalendar(); Event evt = iCal.Create<Event>(); Uri eventLink = new Uri("http://local

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

    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;
    }
这将在服务器端生成ics文件并将其传递回客户端,因此您将收到“是否要从localhost打开blah.ics?”。这正是我想要的

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

 $.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响应返回给success函数。我如何使用ajax调用控制器,但让它按照我所描述的手动方式下载文件


谢谢你的ajax成功,把这个

  Window.location.href='yourICSfileLink';

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

  Window.location.href='yourICSfileLink';

这将在ajax创建文件成功时重定向浏览器,然后打开或在本例中下载ics文件。请注意,由于@heads5150的链接,每次ajax成功时都会发生这种情况

这只是将浏览器位置设置为:

document.location.href = "app/GenerateICS?...";

感谢@heads5150的链接

这只是将浏览器位置设置为:

document.location.href = "app/GenerateICS?...";

我只是想从js下载,答案通常与创建iframe和完成它有关。甚至有一些jquery插件可以这样做。一些例子:


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

我只是想从js下载,答案通常与创建iframe和完成它有关。甚至有一些jquery插件可以这样做。一些例子:


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

你为什么要通过AJAX下载文件?我不想通过AJAX下载文件。我只是目前不知道如何从javascript执行MVC操作,以另一种方式返回下载的文件?类似于此,请参见公认的答案为什么要通过AJAX进行文件下载?我不想通过AJAX下载文件。我只是目前不知道如何从javascript执行MVC操作,以另一种方式返回下载的文件?类似于此,请参见接受的答案不适用于ajax,将搜索参数添加到url并完全删除ajax不适用于ajax,将搜索参数添加到url并删除ajax CompleteYapp/generateICS创建文件,在完整窗口上。location.href应提供完整ics文件的url,可能希望在命名方面有点动态Dapp/generateICS创建文件,在完整窗口上。location.href应提供完整ics文件的url,就命名而言,可能需要一些动力