在页面上创建iframe:

时间:2013-11-16 07:11:16

标签: javascript iframe

我使用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”,我错了什么?!

2 个答案:

答案 0 :(得分:0)

跨域 - 我自己会推荐JSONP

What is JSONP all about?

看起来您的iFrame尚未创建。这个脚本是否在客户端托管?

答案 1 :(得分:0)

你使用的是错误的方法。即使您解决了异常,代码也无法正常工作。您仍然会遇到跨域问题,除非您从服务器加载iframe以发送请求。 JSONP是一个替代,但它不支持POST调用(我希望)。