【发布时间】:2011-06-29 11:30:44
【问题描述】:
当服务器完成处理表单时,javascript 如何注册回调以运行?这是我的特殊设置:
<form
id="savePlaylistForm"
name="savePlaylistForm"
target="savePlaylistIFrame"
method="post"
action="<?=base_url()?>index.php/savePlaylist">
<input
type="hidden"
id="savePlaylistEntire"
name="savePlaylistEntire" />
</form>
<iframe
id="savePlaylistIFrame"
name="savePlaylistIFrame"
style="display: none">
</iframe>
我尝试了以下方法无济于事:
onSubmit
将 onSubmit 附加到表单不是正确的事件,因为 onSubmit 在客户端尝试提交时发生。甚至还没有联系到服务器。
加载
我将 onLoad 附加到目标 iFrame。在我的情况下它不会被解雇。我的服务器脚本设置标题以模拟 m3u 播放列表文件。 IFrame 仅在加载普通 HTML 页面时触发 onLoad,而不是在弹出文件保存对话框时触发。即使我要在 iFrame 中加载纯 HTML 页面,onLoad 也只会在用户第一次提交表单时触发。后续提交不会触发 onLoad。
【问题讨论】:
-
我不知道代码会如何查找,但如果您使用
XMLHttpRequest对象 (xhr) 提交数据,您应该能够将事件绑定到onreadystatechange事件。在那里,您应该能够使用xhr.getResponseHeader('Content-Type')或其他方式询问返回的标头。如果onreadystatechange事件触发并且readyState == 4触发,甚至可能不需要询问。
标签: javascript html forms iframe