Sep 16

再入Ajax 不指定

felix021 @ 2008-9-16 15:29 [IT » 网络] 评论(2) , 引用(0) , 阅读(7159) | Via 本站原创 | |
今天花了点时间拾起Ajax的教程再看,终于搞定了非IE浏览器的处理
更重要的是发现了这一点:
引用
Ajax 采用一种沙箱安全模型。因此,Ajax 代码(具体来说就是 XMLHttpRequest 对象)
只能对所在的同一个域发送请求。如果让 Ajax 代码在 www.abc.com 上运行,则必须是
www.abc.com 中运行的脚本才能发送请求。

这就是我刚开始时遇到如下错误的原因了:
引用
[Exception... "Access to restricted URI denied"  code: "1012" nsresult: "0x805303f4 (NS_ERROR_DOM_BAD_URI)"  location: "http://localhost/ajax/1.html Line: 36"]


下面给出我的一段测试代码(带注释):
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Ajax Test</title>
</head>
<body>
<div id="content"></div><!-- 此div用于显示ajax代码取回的数据  -->
<script language="javascript">
    //为了兼容新老版本IE和非IE浏览器,写此函数用于创建一个XMLHTTP对象
    function GetXMLHTTP()
    {
        var xmlHttp=null;
        try{
            try{ xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }
            catch(e1){ xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");}
        }catch(e2){ xmlHttp=new XMLHttpRequest;}
        return xmlHttp;
    }
    //此函数将和XMLHTTP对象的onreadystatechange事件绑定
    function stateChange(){
        var div1 = document.getElementById("content");
        if(xml.readyState == 4){ //表示完成数据传送
            if(xml.status == 200){ //HTTP状态200表示成功
                div1.innerHTML = xml.responseText;
            }else{
                alert(xml.status);
            }
        }else{
            div1.innerHTML = "Waiting...";
        }
    }
    // 取得当前页面域名(AJAX沙箱安全模型要求XMLHTTP只对当前域名有效)
    // 组合出目的URL,用于XMLHTTP的open方法
    // p.s. 由于 Ajax 代码是沙箱型的,因而只能连接到同一个域,实际上 URL 中不需要域名。
    // 也就是说 var url = "/1.txt"; 就OK了。
    var url = "http://" + window.location.host + "/1.txt";
    var xml = GetXMLHTTP(); //创建对象
    try{
        xml.onreadystatechange = stateChange; //绑定事件
        xml.open("GET", url, true); //get方式异步请求url
        xml.send(null); //发送请求
    }catch(e){ alert(e); } //请求出错处理
</script>
</body>
</html>




欢迎扫码关注:




转载请注明出自 ,如是转载文则注明原出处,谢谢:)
RSS订阅地址: https://www.felix021.com/blog/feed.php
Tags:
neolyx
2009-4-13 13:40
你好,我也遇到类似的问题,我的问题是这段代码如果运行在客户端的话,url应该怎么构造啊?
felix021 回复于 2009-4-13 17:25
具体描述一下你是在什么环境下运行这个脚本
linucos Email Homepage
2009-4-12 20:26
多交流阿~哈哈~
我的相同问题解决了~
felix021 回复于 2009-4-12 21:50
:)
分页: 1/1 第一页 1 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   *非必须
网址   电邮   [注册]