JQuery文件上传iframe方法

JQuery文件上传iframe方法,jquery,internet-explorer-8,cross-domain,jquery-file-upload,Jquery,Internet Explorer 8,Cross Domain,Jquery File Upload,我想建立一个与IE8兼容的跨域文件上传解决方案。我一直在用 上传效果很好,但我无法从服务器端获得上传结果。重定向选项到result.html文件进行解析似乎是解决方案,但问题是我无法访问承载表单的服务器来部署html文件。在这种情况下,是否有其他方法可以在不将HTML文件部署到源服务器的情况下检索上载结果?在javascript文件中,您可以添加此事件侦听器() 接下来,当上传完成时,您可以将其写入页面,或者将iframe重定向到另一个包含此内容的页面 window.parent.postMes

我想建立一个与IE8兼容的跨域文件上传解决方案。我一直在用


上传效果很好,但我无法从服务器端获得上传结果。重定向选项到result.html文件进行解析似乎是解决方案,但问题是我无法访问承载表单的服务器来部署html文件。在这种情况下,是否有其他方法可以在不将HTML文件部署到源服务器的情况下检索上载结果?

在javascript文件中,您可以添加此事件侦听器()

接下来,当上传完成时,您可以将其写入页面,或者将iframe重定向到另一个包含此内容的页面

window.parent.postMessage('File Upload Done', '*');
如果需要向父级发送更多数据,则需要先
JSON.stringify
内容(旧IE和FF不允许对象,只允许字符串)


如果您无法访问文件正在上载到的服务器,我认为在上载完成后,没有办法将数据传递回父级。我能想到的唯一方法是从iframe上进行一次长时间的轮询或发布消息。该文件实际上正在上载到我的服务器,我可以访问该服务器。我无法访问正在呈现文件上载控件的服务器。服务器A呼叫服务器B请求JS文件。该JS文件呈现一个文件上载控件,该控件使用AJAX将上载的文件发送到服务器B。我没有访问服务器A的权限,但我有完全访问服务器B的权限。这意味着您还可以访问呈现这些控件的JS文件?如果是这样的话,我们可以用Post Message来满足您的要求。在我给出实际答案之前,让我知道这是正确的。是的,我们可以访问正在调用的JS文件。但据我所知,PostMessage仅受Chrome支持,对吗?不对,PostMessage是IE8+&基本上是所有其他浏览器。谢谢你提供的细节。似乎出于某种原因,e.data和e.message都没有定义。仍在试图找出原因。@emroc很抱歉,在使用jQuery时,还需要将
originalEvent
添加到数据部分(非jQuery方式不需要此选项)。现在应该可以了。谢谢你的更新。我已经让你的解决方案工作了,但是我仍然不能完全理解如何将文件上传成功/失败从服务器传回页面。postmessage解决方案完全在客户端工作。@emroc所以您要做的就是这样。使用和
iframe
表单创建页面。确保表单具有
target=“nameOfIframe”
。当用户提交表单时,它会将表单发布到iframe。这意味着iframe将转到
表单
操作
字段中的url。因此,请确保url处理要发布的文件。最后,使处理上载的文件的结尾具有
window.parent.postMessage('data','*')。由于您与上传文件仍在同一个文件中,因此您知道上传是否失败&数据可能是动态的。确保文件具有有效的doctype&
html
window.parent.postMessage('File Upload Done', '*');
window.parent.postMessage(JSON.stringify({'success': true, 'id': 1942}), '*');