Отправка AJAX-запроса - не могу приступить к работе - PullRequest
0 голосов
/ 04 июня 2010

Я пытаюсь сделать запрос AJAX GET, но просто не могу заставить его работать. Я хочу получить исходный HTML-код example.com. Ранее я использовал JQuery для отправки запросов AJAX, но я использую JQuery только для его возможностей AJAX, поэтому тратить 30KB-файл для одной задачи было бы напрасно. Что я делаю не так?

<script type="text/javascript">

var XMLHttpArray = [
    function() {return new XMLHttpRequest()},
    function() {return new ActiveXObject("Msxml2.XMLHTTP")},
    function() {return new ActiveXObject("Msxml2.XMLHTTP")},
    function() {return new ActiveXObject("Microsoft.XMLHTTP")}
];
function createXMLHTTPObject(){
    var xmlhttp = false;
    for(var i=0; i<XMLHttpArray.length; i++){
            try{
                    xmlhttp = XMLHttpArray[i]();
            }catch(e){
                    continue;
            }
            break;
    }
    return xmlhttp;
}
function AjaxRequest(url,method){
    var req = createXMLHTTPObject();
    req.onreadystatechange= function(){
            if(req.readyState != 4) return;
            if(req.status != 200) return;
            return req.responseText;
  }
    req.open(method,url,true);
    req.send(null);
}

function MakeRequst(){
var result=AjaxRequest("http://example.com","get");
alert(result);
}
</script>

1 Ответ

2 голосов
/ 04 июня 2010

Возвращение значения из вашего обработчика изменения состояния не принесет вам никакой пользы - этот код ждет, когда что-то произойдет, и вызывается изнутри браузера во время обработки HTTP-запроса. Это асинхронный .

Вместо того, чтобы ожидать такого результата, ваш обработчик изменения состояния должен сам обрабатывать ответ в соответствии с вашим приложением.

function AjaxRequest(url,method){
  var req = createXMLHTTPObject();
  req.onreadystatechange= function(){
        if(req.readyState != 4) return;
        if(req.status != 200) return;
        alert(req.responseText);
  }
  req.open(method,url,true);
  req.send(null);
}
...