如何在Firefox中从JavaScript解析HTML?(2)

如何在Firefox中从JavaScript解析HTML?(2),javascript,xmlhttprequest,Javascript,Xmlhttprequest,我试图在Firefox中解析**XmlHttpRequest**的HTML结果。我m期望从XmlHttpRequests*responseText*接收HTML结果,但当我调用警报(responseText)时,什么也不显示。 我遵循了http://stackoverflow.com/questions/888875/how-to-parse-html-from-javascript-in-firefox 但这也不起作用。 下面是我要说清楚的代码: <html> <head&

我试图在Firefox中解析**XmlHttpRequest**的HTML结果。我m期望从XmlHttpRequest
s*responseText*接收HTML结果,但当我调用警报(responseText)时,什么也不显示。
我遵循了http://stackoverflow.com/questions/888875/how-to-parse-html-from-javascript-in-firefox  但这也不起作用。
下面是我要说清楚的代码:

<html>
<head>
<script type="text/javascript">
var http1;
var result;
function onPageLoad()
{
    http1=getXmlHttpObject();

    http1.open("GET", "https://login.yahoo.com/config/login_verify2?&.src=ym", true);
    http1.send(null);
    http1.onReadyStateChange=stateChanged();
}

function stateChanged()
{
    if(http1.readyState==4)
        {                   
            result = http1.responseText;
            alert("result"+ result);
            var tempDiv = document.createElement('div');
            tempDiv.innerHTML = result.replace(/<script(.|\s)*?\/script>/g, '');
            // tempDiv now has a DOM structure:

            alert(tempDiv.getElementById('username').size);
        }
    else
        alert("mircea geoana la zoo");
}

function getXmlHttpObject()
{
    var objXMLHttp=null;
    if (typeof XMLHttpRequest!= 'undefined')
    {
        objXMLHttp=new XMLHttpRequest();
    } 
    else
    {
        objXMLHttp=new ActiveXObject(Microsoft.XmlHttp);
    }
    return objXMLHttp;
}
</script>
</head>
<body onload="onPageLoad()">
<p>aaa<p>
</body>
</html>

var-http1;
var结果;
函数onPageLoad()
{
http1=getXmlHttpObject();
http1.open(“GET”https://login.yahoo.com/config/login_verify2?&.src=ym“,对);
http1.send(空);
http1.onReadyStateChange=stateChanged();
}
函数stateChanged()
{
if(http1.readyState==4)
{                   
结果=http1.responseText;
警报(“结果”+结果);
var tempDiv=document.createElement('div');
tempDiv.innerHTML=result.replace(//g',);
//tempDiv现在有一个DOM结构:
警报(tempDiv.getElementById('username').size);
}
其他的
警报(“mircea geoana la zoo”);
}
函数getXmlHttpObject()
{
var objXMLHttp=null;
if(XMLHttpRequest的类型!=“未定义”)
{
objXMLHttp=newxmlhttprequest();
} 
其他的
{
objXMLHttp=新的ActiveXObject(Microsoft.XmlHttp);
}
返回objXMLHttp;
}
aaa
应该是

http1.onReadyStateChange=stateChanged;

以下是定义xmlhttp对象的方式:

  var xmlhttp;
if (window.XMLHttpRequest)
  {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else if (window.ActiveXObject)
  {
  // code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
else
  {
  alert("Your browser does not support XMLHTTP!");
  }
查看这所学校,了解如何正确使用AJAX调用等


编辑-我的错,只看到定义IE6/5调用的行。无论哪种方法,这种方法都要干净得多。

我认为这是一个很大的错误。。else分支上的消息应为“miRcea”,而不是“micea”。。告诉我这是否解决了你的问题,克劳迪乌先生;)

您只能将AJAX请求发送到JavaScript的源域。我猜你不会从“login.yahoo.com”发送请求,…

已经解决了这个大问题,但是感谢你的观察,如果我删除(),stateChanged将不会被调用@克劳迪乌:会的。您应该分配一个函数引用,当状态发生变化时,XHR对象将调用该函数引用。此时您正在分配“undefined”,因为这是调用stateChanged的返回值。但更重要的是,正如Tubbe所说,你无论如何都会遇到一个错误,因为你不能跨域使用XHR。我不知道该怎么想,从我在许多论坛/教程上读到的内容来看,我无法从外部链接访问HTML对象(js脚本运行的链接除外),但是通过XmlHttpRequest,这在某种程度上是可能的:|如何使用AJAX回调您的Web服务器应用程序,从那里调用外部目的地(即yahoo)并只返回结果HTML?
  var xmlhttp;
if (window.XMLHttpRequest)
  {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else if (window.ActiveXObject)
  {
  // code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
else
  {
  alert("Your browser does not support XMLHTTP!");
  }