以下是这种情况: 我们有一个文件上传页面。我们不想在上传完成后重新加载页面,因此我们将表单放在iframe中。 iframe内部的表单发布到自身并在完成后返回json。我们如何捕捉到这种反应?上传完成后,iframe会重新加载,换句话说,我们如何在重新加载iframe时捕获它?
假设这些:
有什么想法吗?
UPDATE - 似乎解决方案非常简单(在网上找到它):
<iframe onload="alert(window['upload_iframe'].document.body.innerHTML);" ...></iframe>
这样,只要重新加载iframe中的页面,它就会触发警报。现在只需区分JSON对象和HTML代码,这非常简单。感谢大家的建议!
答案 0 :(得分:2)
您是否尝试将“onload”侦听器附加到iframe元素,以查看iframe源何时更改,是否已触发?这可能是一个解决方案。如果它不起作用,那么我认为你没有选择,只能从iframe结果中执行顶级函数。
<强>更新强>
由于您无法控制来自servlet的响应,因此您可以构建一个与servlet通信的PHP中值并获取它获取的原始json,然后返回执行父窗口javscript函数所需的内容。将json传递给该函数。
这样就可以控制输出。
答案 1 :(得分:0)
您可以通过对iFrame文档的内部文本执行定时检查来检查iFrame的内容是否已更改,无论上次检查时是什么(或者如果文档很大,还是哈希),然后执行一次它已经改变了你可以尝试将内容解析为JSON以检查它是否是预期的响应。
或者,您可以使用AJAX检查上传是否已在服务器端完成,一旦服务器确认已完成上传,您就可以检查iFrame内容。