处理表单后的Javascript事件
服务器完成表单处理后,javascript如何注册回调以运行?这是我的特殊设置:处理表单后的Javascript事件,javascript,html,forms,iframe,Javascript,Html,Forms,Iframe,服务器完成表单处理后,javascript如何注册回调以运行?这是我的特殊设置: <form id="savePlaylistForm" name="savePlaylistForm" target="savePlaylistIFrame" method="post" action="<?=base_url()?>index.php/savePlaylist"> <input type="hid
<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处理程序,该处理程序取消默认提交操作(返回false),并通过进行Ajax调用复制默认浏览器提交。然后,您就可以附加一个响应回调(通过监听onReadyStateChange,或使用更高级别的东西,如jQuery)。提交表单不会刷新整个页面。这是一个就地表单提交。我调用$('saveplayliform').submit()
,服务器响应的目标是iFrame。这不能用Ajax复制。Ajax无法为模拟文件的PHP输出弹出文件保存对话框。我不知道代码会如何查找此对话框,但如果您使用XMLHttpRequest
对象(xhr
)提交数据,您应该能够将事件绑定到onreadystatechange
事件。在这里,您应该能够使用xhr.getResponseHeader('Content-Type')
或其他方法查询返回的头。如果触发onreadystatechange
事件并且readyState==4
,则可能甚至不需要询问。