我可以创建一个表单并使用它向任何站点发出 POST 请求,但 FORM 方法不是异步的,我需要知道页面何时完成加载。我尝试使用内部带有表单的 iframe 来解决这个问题,但没有成功。

有任何想法吗?

编辑

不幸的是我无法控制响应数据,它从 XML、json 到简单文本。

有帮助吗?

解决方案

可以捕捉onloadiframe事件。定位您form的iframe和监听onload事件。您将无法访问,虽然iframe的内容,只是事件。

尝试是这样的:

<iframe id='RS' name='RS' src='about:blank' onload='loaded()'></iframe>

<form action='wherever.php' target='RS' method='POST'>...</form>

脚本块:

var loadComplete = 0
function loaded() {
    //avoid first onload
    if(loadComplete==0) {
        loadComplete=1
        return()
    }
    alert("form has loaded")
}

其他提示

如果你想使你要么做一个JSON调用跨域请求或使用服务器端代理。一个服务器端的代理是很容易建立,不知道为什么人们避免这么多。设置规则中它使人们可以不使用代理来请求其他的东西。

如果从交叉域后返回的数据是JSON,则可以动态地添加的脚本代码指向该返回数据的URI。该浏览器将加载“脚本”,其然后可以从其他的JavaScript访问。

YUI3IO 对象提供跨域请求,但是它使用嵌入在页面上的小型 Flash 控件来实现。

虽然正在研究来自 JavaScript 的安全跨域请求,但此时,您需要使用 Flash 或 Silverlight 等插件作为发出请求的桥梁。

您不能使用JavaScript做任何事情跨域。你必须使用像PHP或ASP或什么后端语言。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top