【问题标题】:how to get the source code based on url using java script?如何使用javascript获取基于url的源代码?
【发布时间】:2012-08-20 10:36:21
【问题描述】:

我写了一些代码来获取html源代码,但它只适用于IE8,但不适用于mozila和chrome,是什么问题,请给我建议。 我的代码

<script>

        function processStateChange() {
            statusDiv = document.getElementById("stats");
            if (req.readyState == 0) { statusDiv.innerHTML = "UNINITIALIZED"; }
            if (req.readyState == 1) { statusDiv.innerHTML = "LOADING"; }
            if (req.readyState == 2) { statusDiv.innerHTML = "LOADED"; }
            if (req.readyState == 3) { statusDiv.innerHTML = "INTERACTIVE"; }
            if (req.readyState == 4) {
                statusDiv.innerHTML = "COMPLETE";
                statusDiv.innerHTML = req.responseText;
            }
        }
        function GetXmlHttpObject() {
            if (window.XMLHttpRequest) {  // code for IE7+, Firefox, Chrome, Opera, Safari
                return new XMLHttpRequest();
            } if (window.ActiveXObject) {  // code for IE6, IE5 
                return new ActiveXObject("Microsoft.XMLHTTP");
            } return null;
        }
        //req = new XMLHttpRequest("Msxml2.XMLHTTP");     
        req = GetXmlHttpObject();
        debugger;
        if (req) {
            req.onreadystatechange = processStateChange;
            req.open("GET", "http://whatismyipaddress.com/", true);            
            req.send();
        }

    </script>

我检查以调试代码 IE 完全在循环中工作(req.readystate==4 以最终获得响应文本)但 mozila 或 chromes 仅在工作循环中(req.readystate==2 在中止循环后),什么问题,请给我一些建议,使用jquery或java脚本来解决问题

谢谢你 赫曼斯

【问题讨论】:

  • 你不使用像jQuery这样的库有什么原因吗?
  • @MihaiIorga 不相关
  • @hmk 你检查过 js 控制台吗?没有错误吗?
  • 在 jsfiddle 中尝试,我得到这个:“XMLHttpRequest 无法加载 whatismyipaddress.com。访问控制允许来源不允许来源 fiddle.jshell.net。”
  • 请举个例子

标签: javascript jquery url cross-browser xmlhttprequest


【解决方案1】:

由于same origin policy 限制,您不能发送跨域 AJAX 调用。这在 IE 中起作用的原因可能是您正在使用一些旧的恐龙版本的 IE,它有一些错误并允许这样的 AJAX 请求。但是没有现代浏览器会允许您这样做。

您只能向包含发送 AJAX 请求的 javascript 代码的页面所在的域发送 AJAX 请求。

根据您对远程域的控制级别,有一些解决方法。在你的情况下,我猜你无法控制http://whatismyipaddress.com/。因此,您唯一的选择是在您的域上编写一个服务器端脚本,作为您的域和远程域之间的桥梁,然后将 AJAX 请求发送到您的脚本:

req.open("GET", "/myscript", true); 

【讨论】:

  • 无法使用jquery或java脚本获取数据,请举个例子,我必须在whatismyipaddress.com中获取城市名称,
  • 抱歉,这在 javascript 中是不可能的。正如我在回答中已经解释的那样,浏览器内置的相同来源策略限制根本不允许您这样做。实现这一点的方法是编写一个服务器端脚本(PHP、ASP.NET、Java...),它将查询远程服务,然后使用 javascript 向您的脚本发送 AJAX 请求。
猜你喜欢
  • 1970-01-01
  • 2017-06-11
  • 1970-01-01
  • 2014-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-09
  • 2011-09-16
相关资源
最近更新 更多