【发布时间】:2010-06-24 11:24:28
【问题描述】:
我有一个 ashx 处理程序,它从请求中获取“html”属性,然后将其返回给调用它的任何内容。我还将 Content-Disposition 设置为附件。
直接调用页面按预期工作,通过另存为对话框强制下载。
我坚持的是:我需要从 javascript (jQuery) 执行此操作。我将发布一个 div 的内容并做一些进一步的处理。
有人能给我一些关于这是如何完成的指示吗?
非常感谢。
【问题讨论】:
我有一个 ashx 处理程序,它从请求中获取“html”属性,然后将其返回给调用它的任何内容。我还将 Content-Disposition 设置为附件。
直接调用页面按预期工作,通过另存为对话框强制下载。
我坚持的是:我需要从 javascript (jQuery) 执行此操作。我将发布一个 div 的内容并做一些进一步的处理。
有人能给我一些关于这是如何完成的指示吗?
非常感谢。
【问题讨论】:
我会(事实上,这样做:-))有一个带有隐藏字段的表单,将 div 的内容复制到该字段,然后将表单提交到隐藏的 (display: none) iframe。
在页面上包含一个隐藏的 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();
(适当填写各种“...”。)
在我的例子中,我展示了一个覆盖 div,告诉用户我在做什么,并启动一个计时器来监视 iframe 的内容(用于错误消息)和状态 cookie(有关更多信息,请参阅this answer饼干把戏)。叠加层会根据结果更新或删除。
【讨论】:
| one one | 一二 |
| 二一 | 二二 |
$("#hiddenHtml").val( $(str).html() ); 正在调用$ 上已经是一个jQuery 对象的东西[str]。)它是否正确设置了隐藏值?它提交表格吗?等等。