Как разобрать HTML из JavaScript в Firefox? (2) - PullRequest
0 голосов
/ 13 октября 2009

I m trying to parse a HTML result of **XmlHttpRequest** in Firefox. I m ожидает получения результата HTML от XmlHttpRequest s *responseText* but when I m, вызывающего предупреждение (responseText) . Ничего не отображается. Я тоже не работаю. Вот код, чтобы прояснить ситуацию:

<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>

Ответы [ 4 ]

2 голосов
/ 13 октября 2009
http1.onReadyStateChange=stateChanged();

должно быть

http1.onReadyStateChange=stateChanged;
0 голосов
/ 13 октября 2009

Вы можете отправлять запросы AJAX только в тот же домен, из которого происходит JavaScript. И я предполагаю, что вы не отправляете свои запросы от "login.yahoo.com" ...

0 голосов
/ 13 октября 2009

Я вижу там большую ошибку ... сообщение в ветке else должно гласить "miRcea", а не "micea" .. Скажите, решит ли это вашу проблему, мистер Клаудиу;))

0 голосов
/ 13 октября 2009

Вот как вы должны определить объект 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!");
  }

Ознакомьтесь с этим учебником w3School , чтобы прочитать о том, как правильно использовать вызовы AJAX и т. П.

edit - плохо, видел только строку, определяющую вызов для IE6 / 5. В любом случае этот метод намного более чистый.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...