【发布时间】:2018-05-04 23:12:33
【问题描述】:
所以我想在页面加载时通过 iFrame 发送 XMLHttpRequest POST 请求。通过 iFrame 发布的原因是不显示推荐人。
Javascript:
function load() {
var http = new XMLHttpRequest();
var url = "action url here";
var params = "name1=one&name2=two";
http.open("POST", url, true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
http.send(params);
}
HTML:
<body onload="load();">
<iframe name="f1" src="about:blank" id="noreferer" width="0px" height="0px" style="border: 0px none;"> </iframe>
</body>
如何将请求附加到 iFrame。任何帮助,将不胜感激。
更新:
对于任何询问我为什么在 HTML 正文中添加和触发 load(); 的人,以下是通过 innerHTML 连接到 f1 iframe 的无引荐来源帖子请求代码,该代码适用于所有浏览器,因为 src is 'about blank'。但不是 XMLHttpRequest,也不能添加标头。
Javascript:
function load() {
var postdata = '<form id=NoReferrerPost method=POST action=\'action url here\'>' +
'<input type=hidden name=name1 value=one />' +
'<input type=hidden name=name2 value=two />' +
'</form>';
top.frames['f1'].document.body.innerHTML=postdata;
top.frames['f1'].document.getElementById('NoReferrerPost').submit();
}
所以仍然需要一种附加 XMLHttpRequest 以在 iframe f1 中发布的方法,就像我上面的代码一样。
这里有一些部分有效的解决方案:
@fedeghe HERE 使用 src="data:text/html 和 no-referrer 元标记的解决方案可以在 some browsers 上工作。
【问题讨论】:
-
如果您从主体
onload调用load函数,这意味着脚本是在body标记所在的同一页面中定义的......那么我有一个基本问题。 .. 究竟是什么让您认为iframe可以处理load函数? -
"如何将请求附加到 iFrame。"为什么需要将它附加到 iframe?
-
@epascarello — 查看问题的第一段。
-
完全错过了,我非常怀疑这样做会奏效....大声笑
-
@fedeghe 我刚刚更新了这个问题,以回答您最初的问题,即为什么我从 body onload 中触发了 load 函数。所需要的可能是一个连接器,因此需要 onload 函数。
标签: javascript html xmlhttprequest