javascript
  • request
  • response
  • 2010-07-07 4 views 3 likes 
    3

    Мой запрос функции Javascript на страницу aspx. ИТС Код:Получите ответ от сервера с помощью Javascript после запроса Javascript

    var xhr = ("XMLHttpRequest" in window) ? new XMLHttpRequest() : new ActiveXObject("Msxml3.XMLHTTP"); 
        xhr.open("GET", = 'http://www.example.net/abc.aspx', true); 
        xhr.send(""); 
    

    После этого запроса я хочу, чтобы отправить ответ обратно с этой страницы и поймать его на стороне клиента. Как мне это сделать?

    +0

    Murat, вы должны посмотреть на фреймворк javascript (например, jQuery), чтобы сделать это. Его кросс-браузер и довольно прямолинейный. –

    ответ

    6

    Чтобы получить ответ от XMLHttpRequest в асинхронном режиме (третий параметр true для метода open()) вы должны установить onreadystatechange свойство функции обратного вызова. Эта функция будет вызываться назад, когда ответ готов в браузере:

    xhr.open("GET", 'http://www.example.net/abc.aspx', true); 
    xhr.onreadystatechange = function() { 
        if (xhr.readyState === 4) { 
        var serverResponse = xhr.responseText; 
        } 
    }; 
    xhr.send(null); 
    

    Вы можете проверить следующую статью для дальнейшего чтения по теме:

    +0

    Спасибо всем. Все ответы решают мою проблему. – Murat

    3

    Чтобы получить ответ, добавьте функцию обработчика событий readystatechange. Это будет вызван обратно, когда ответ готов читать:

    xhr.onreadystatechange= function() { 
        if (this.readyState!==4) return; // not ready yet 
        if (this.status===200) { // HTTP 200 OK 
         alert(this.responseText); 
        } else { 
         // server returned an error. Do something with it or ignore it 
        } 
    }; 
    xhr.open('GET', 'http://www.example.net/abc.aspx', true); 
    xhr.send(); 
    

    Кстати:

    ("XMLHttpRequest" in window) 
    

    Хотя in в общем хороший способ проверить, существует ли свойство, это один из очень несколько мест, где это не идеально.

    Проблема заключается в том, что в IE7 +, когда параметр в «родной XMLHttpRequest» выключен, XMLHttpRequest все еще существует как свойство в window, но с непригодным значением null. Так что лучше в данном конкретном случае использовать простой тест истины, которая позволит Откат к ActiveX в (маловероятном) случае, если эта опция отключена:

    var xhr= window.XMLHttpRequest? new XMLHttpRequest() : new ActiveXObject('MSXML2.XMLHttp'); 
    
    2

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

    // making a call is as simple as this 
    ajax("http://www.example.net/abc.aspx", function(data){ 
        // do something with the server's response 
        alert(data); 
    }); 
    
    /////////////////////////////////////////////////////////////////////////////// 
    
    function getXmlHttpObject() { 
        var xmlHttp; 
        try { 
         // Firefox, Opera 8.0+, Safari 
         xmlHttp = new XMLHttpRequest(); 
        } catch (e) { 
         // Internet Explorer 
         try { 
          xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); 
         } catch (e) { 
          xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
         } 
        } 
        if (!xmlHttp) { 
         alert("Your browser does not support AJAX!"); 
        } 
        return xmlHttp; 
    } 
    
    
    function ajax(url, onSuccess, onError) { 
    
        var xmlHttp = getXmlHttpObject(); 
    
        xmlHttp.onreadystatechange = function() { 
         if (this.readyState === 4) { 
    
          // onSuccess 
          if (this.status === 200 && typeof onSuccess == 'function') { 
           onSuccess(this.responseText); 
          } 
    
          // onError 
          else if(typeof onError == 'function') { 
           onError(); 
          } 
    
         } 
        }; 
        xmlHttp.open("GET", url, true); 
        xmlHttp.send(null); 
        return xmlHttp; 
    }​ 
    
    Смежные вопросы