我使用iframe方法发出跨域请求,这是一个功能代码:
<script>
function postIframe(target_url, method, params)
{
//Add iframe
var iframe = document.createElement("iframe");
document.body.appendChild(iframe);
iframe.style.display = "none";
//Give the frame a name
var frame_name = "frame_name" + (new Date).getTime();
iframe.contentWindow.name = frame_name;
//build the form
var form = document.createElement("form");
form.target = frame_name;
form.action = target_url;
form.method = method;
//loop through all parameters
for (var key in params)
{
if (params.hasOwnProperty(key))
{
var input = document.createElement("input");
input.type = "hidden";
input.name = key;
input.value = params[key];
//form.appendChild(input);
}
}
document.body.appendChild(form);
form.submit();
}
var target_url = 'http://domain.com/test/example.php';
var method = 'POST';
var obj = { var2domain: "ya", var2domainval: "baz" };
postIframe(target_url, method, obj);
</script>
我在控制台中收到一条消息说:“未捕获TypeError:无法调用方法'appendChild'为null”,我错了什么?!
答案 0 :(得分:0)
答案 1 :(得分:0)
你使用的是错误的方法。即使您解决了异常,代码也无法正常工作。您仍然会遇到跨域问题,除非您从服务器加载iframe以发送请求。 JSONP是一个替代,但它不支持POST调用(我希望)。