如何:jQuery发布到ashx文件强制下载结果?

时间:2010-06-24 11:24:28

标签: jquery ashx

我有一个ashx处理程序,它从请求中获取'html'属性,然后将其返回给调用它的任何内容。我还将Content-Disposition设置为附件。

直接调用页面可以正常工作,强制下载时使用另存为对话框。

我坚持的是:我需要从javascript(jQuery)做到这一点。我将发布div的内容并进行进一步处理。

有人可以就如何做到这一点给我一些指示吗?

非常感谢。

1 个答案:

答案 0 :(得分:1)

我会(事实上,做:-))有一个带有隐藏字段的表单,将div的内容复制到字段,然后将表单提交给隐藏的(display: none)iframe。< / p>

在页面上包含隐藏的iframe:

<iframe name="formTarget" src="blank.html" style="display: none">

(例如,它最初是空白的。我实际上确实使用了一个blank.html文件,这听起来就是这样,而不是(比如说)about:blank,因为后者在某些方面不能正常工作案件;我不记得细节了。)

告诉表单提交到iframe并触发你的ashx文件:

<form ... action="your.ashx" target="formTarget" ... >

将div的内容复制到字段:

$("#fieldId").val($("#divId").html()); // Either .html() or .text(), depending on what you want

提交表格:

$("#formId").submit();

(适当填写各种“......”)。

在我的情况下,我会显示一个overlay div告诉用户我正在做什么,并启动一个计时器来监视iframe的内容(用于错误消息)和状态cookie(请参阅this answer for更多关于cookie技巧)。根据结果​​更新或删除叠加层。