代码之家  ›  专栏  ›  技术社区  ›  ryan

如何在单独的框架中打开Ajax请求?

  •  1
  • ryan  · 技术社区  · 17 年前

    好的,我有这个代码:

     <script language="javascript" type="text/javascript">
    <!--
    
    function requestPage(page) {
    
        var request = false;
    
        try {
            request = new XMLHttpRequest();
        } catch (e) {
            try{
                request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try{
                    request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {
                alert("Unable to complete your request.");
                return false;
                }
            }
        }
    
        request.onreadystatechange = function() {
            if(request.readyState == 4) {
                if(request.status == 200) {    
                    document.getElementById('content').innerHTML = request.responseText;
                }
            }
        }
    
        request.open("GET", "include.php?page=" + page, true);
        request.send(null);
    }
    
    //-->
    </script>
    

    很明显,就是这样:

    <a onclick="javascript:requestPage('red_the_clown')"><li>Red</li></a>
    <div id="content"><?php include('index2.php'); ?></div>
    

    我一直在努力解决如何瞄准一个单独的帧而不是当前帧的问题。也就是说,content div将在main中,但它是从一个帧调用的。

    有人有什么想法吗?

    事先谢谢!

    赖安

    2 回复  |  直到 17 年前
        1
  •  1
  •   seanmonstar    17 年前

    是否要从框架内访问文档?

    顶部指的是最顶部的框架。父级是指向上一级。

    上面的javascript可能只需要一个更改:

    top.document.getElementById('content').innerHTML = request.responseText;
    

    但是,您需要两个帧都来自同一个域,否则您将受到浏览器安全性的限制。

        2
  •  0
  •   puffpio    17 年前

    所以你有一个ID为“主”的iframe?

    怎么样

    window.frames["_main"].document.getElementById("content").innerHTML = request.responseText;