做了一个多功能的气象工具条,在本机测试没有问题,一上传就出现错误了——JS文件中的“xmlhttp.open("GET", xmldoc,false);”拒绝访问(http://m.weather.com.cn/)。
搜索了一下,可以用动态页get.asp获取远程地址的代码,或者动态的构建一个form 然后提交。但我基础很差,不知道具体怎么做。我的JS代码:
function PostOrder(xmldoc) 

     createXMLHTTPRequext();
    
     xmlhttp.open("GET", xmldoc,false); //这句出错了,拒绝访问!
     xmlhttp.onreadystatechange= HandleStateChange;  
     xmlhttp.send(null); 
}请问我该怎样实现跨域访问?请给出具体详细的实例(包括get.asp等的全部代码,我很菜)。我要访问的域名是http://m.weather.com.cn
谢谢!

解决方案 »

  1.   

    修改IE配置:工具-〉internet选项->安全-〉自定义级别,启用关于跨域的选项。
      

  2.   

    js不支持跨域访问
    你使用服务器语言访问网址,然后返回客户端
    jsp 版本的我实现过
    看我的回帖
      

  3.   

    给你个例子
     javascript + asp 实现javascript跨域读取xml文件a.html
     <script  >
     function getPeiLvData() {
         var xmlHttpObj=createXMLHTTP();
         xmlHttpObj.onreadystatechange=function(){
             if (xmlHttpObj.readyState==4)
             {
                if (xmlHttpObj.status==200)
                 {
                     alert(xmlHttpObj.responseText);xmlHttpObj=null;
                 } } }
         xmlHttpObj.open("post","readXML.asp",true);
         xmlHttpObj.setRequestHeader('Content-type','application/x-www-form-urlencoded');
         xmlHttpObj.send(true); }
     getPeiLvData();
     </script>
     readXML.asp
     <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
     <%response.charset="gb2312"%>
     <%
    filePath="http://www.xx.com/xml/xx.xml"
     response.write getXML(filePath)
     function getXML(url)
     dim sttp
     set sttp=server.createobject("MSXML2.XMLHTTP")
     sttp.open "GET",url,false, "", ""
     sttp.send()
     if sttp.readystate<>4 then
     exit function
     end if
     getXML=sttp.responseBody
     set sttp=nothing
     end function
     %>
      

  4.   

    我不懂代码,照葫芦画瓢,没有成功!
    我的readXML.asp(把原来页面的utf-8改为gb2312后,原有页面本机测试也通不过,所以这里也改为utf-8)
     <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
     <%response.charset="utf-8"%>
     <%
    filePath="http://m.weather.com.cn/m/pn11/weather.htm"
     response.write getXML(filePath)
     function getXML(url)
     dim sttp
     set sttp=server.createobject("MSXML2.XMLHTTP")
     sttp.open "GET",url,false, "", ""
     sttp.send()
     if sttp.readystate<>4 then
     exit function
     end if
     getXML=sttp.responseBody
     set sttp=nothing
     end function
     %>原来的JS页面修改后出现了缺少对象的错误:
    function PostOrder() //去掉了xmldoc

         var xmlHttpObj=createXMLHTTP();//这句出错了,字符: 6 错误: 缺少对象
         xmlHttpObj.onreadystatechange=function(){
             if (xmlHttpObj.readyState==4)
             {
                if (xmlHttpObj.status==200)
                 {
                     alert(xmlHttpObj.responseText);xmlHttpObj=null;
                 } } }

        createXMLHTTPRequext(); 
        
        xmlhttpObj.open("GET",readXML.asp,false); 
        xmlhttpObj.onreadystatechange= HandleStateChange;  
        xmlhttpObj.send(null); 
    }
      

  5.   

    补充:这里也仿照您的代码修改了:
        xmlhttpObj.open("GET",readXML.asp,false); 
        xmlhttpObj.onreadystatechange= HandleStateChange;  
        xmlhttpObj.send(null);
      

  6.   

    我最近,也找了很久;如果是jsp开发,好办,用servlet,转一下;
    但是C#下,没有什么好的办法
    如果是用<script>,直接就显示了,我要自己能排版的;
    如果是用proxy,可是大部分代码都写好了,只要xmlhttp.open能跨域就行了。