当前位置: 首页 > 面试题库 >

处理(jQuery)Ajax调用中返回的ASP.NET MVC FileResult

宇文育
2023-03-14
问题内容

目标:
我想让我的用户在我的网页上下载文件。我想打开一个新窗口,并在其中显示或下载文件。

我的实现:
但是,此文件首先必须在服务器端生成,这可能需要一段时间。当用户单击按钮下载文件时,我进行了ajax调用并显示等待动画,直到得到响应为止。处理该调用的控制器操作将生成文件(PDF)并返回FileResult。现在,在javascript中我的ajax调用的成功功能中,我得到了文件数据。

问题: 我不知道如何处理这些数据才能将其提供给用户。

解决方法:
现在,我使用一种解决方法,即不通过ajax调用返回文件,而是将其存储在会话中。在成功功能中,我window.open("/controller/getPDFFromSession")将下载文件。但是,我不希望将会话用于此类事情。

提前致谢。


问题答案:

问题:我不知道如何处理这些数据才能将其提供给用户。

因此,您不应该使用AJAX下载文件。您可以执行以下操作:

  1. 用户点击下载按钮
  2. 使用javascript,您将显示一些进度图像,通知他必须等待
  3. 使用javascript生成隐藏的iframe并将其注入DOM,使其src属性指向应该生成文件的控制器操作
  4. 加载iframe后,您可以隐藏进度图像


 类似资料:
  • 问题内容: 我希望此函数返回ajax调用是否成功。有什么办法可以做到吗?我下面的代码无法做到这一点。 问题答案: 不幸的是,您不能将值返回给包装异步回调的函数。取而代之的是,您从AJAX请求进行的成功回调会将数据和控制权移交给另一个函数。我在下面演示了这个概念: myFunction的定义: 回调函数定义: 调用myFunction:

  • 问题内容: 我试图在我自己的函数中使用jQuery ajax调用的返回值,但它始终返回未定义的值。 ajax调用绝对有效,因为当我取消注释警报时,我得到了正确的返回,并且可以在firebug中看到它。我在做蠢事吗? 问题答案: AJAX调用是异步的-这意味着AJAX请求是按常规程序执行顺序发出的,并且在您的程序中这意味着不会将数据返回警报。 您不能以这种方式使用调用的返回值,而是将利用AJAX返回

  • 问题内容: 我正在为网站进行股票交易所jQuery修复。 编辑:它根据返回的值更新网页上的ID / CLASS或输入值。 index.php: 目前它正在返回: 我也尝试过使用.text()将其返回到div demo.json: 请有人能告诉我我做错了什么。 提前致谢! 问题答案: 你可以这样做: 所以这里的主要问题是: 正如ajax一样,您需要执行ajax成功回调中的所有逻辑,并且始终会获得&变

  • 问题内容: 我有一些jQuery代码。我已经调用了一个Ajax函数文件file.php,其中包含一些字段,例如: 我会再次分配给jQuery函数吗?如果是这样,我该怎么办?我附上了一个示例文件: 问题答案: 该函数采用一个参数,其中包含获取的数据。因此,在您的示例中: 更多示例在jQuery文档中。

  • 问题内容: 我正在使用jQuery的网页上工作。我有一个Ajax调用,它从服务器获取数据并更新div。在该数据内部有一个jQuery函数,但是在将数据加载到页面中之后未调用该函数。我已经在页面中包含了正确的js文件。 这是从Ajax调用返回并放入div的内容: 将html插入页面后,如何使返回的javascript运行? (我将Rails与jRails插件结合使用) 问题答案: 如果要对具有htm

  • 问题内容: 例如我有一个功能: 我怎样才能返回AJAX后得到的? 问题答案: 因为请求是异步的,所以您无法返回ajax请求的结果(而同步ajax请求是一个 糟糕的 主意)。 最好的选择是将自己的回调传递给f1 然后,您将像这样致电: