Ajax-запрос ответ null

-2

Запрос Ajax успешный, но ответ равен null, но я могу увидеть ответ результата в firebug как:

<?xml version="1.0" encoding="UTF-8" ?><response><likes>13</likes></response>

И в консоли есть ошибка:

TypeError: response is null

var XMLHttpObject = createXMLHttpRequest();
$Id = null;

function process(id) { //makeAsynchornusRequest
    if(XMLHttpObject.readyState == 0 || XMLHttpObject.readyState == 4) {
        XMLHttpObject.onreadystatechange = responseHandler;
        $Id = id;
        XMLHttpObject.open("GET","like/" + id);
        XMLHttpObject.send(null);
    }
}

function responseHandler() {
    if(XMLHttpObject.readyState == 4) {
        if(XMLHttpObject.status == 200) { // 200 implies 'ok' like 400 implies 'page not found'
            response = XMLHttpObject.responseXML;
            xmlDocumentElement = response.documentElement;
            output = document.getElementById("num_likes" + $Id);
            output.innerHTML =  xmlDocumentElement ;
        }
    }
}
  • 0
    Пожалуйста, поделитесь своим кодом, как вы вызываете метод AJAX и т. д.
  • 0
    Вы можете разместить код AJAX

2 ответа

0

Можете ли вы попробовать переключить это на onLoad события onLoad.

Из документов Mozilla:

var xhr = new XMLHttpRequest();
xhr.open('GET', '/server', true);

// If specified, responseType must be empty string or "document"
xhr.responseType = 'document';

// overrideMimeType() can be used to force the response to be parsed as XML
xhr.overrideMimeType('text/xml');

xhr.onload = function () {
  if (xhr.readyState === xhr.DONE) {
    if (xhr.status === 200) {
      console.log(xhr.response);
      console.log(xhr.responseXML);
    }
  }
};

xhr.send(null);

С вашим кодом (обратите внимание, что вам может понадобиться слегка отредактировать тело responseHandler():

XMLHttpObject.open("GET","like/" + id);
xhr.onload = responseHandler;
XMLHttpObject.send(null);
0

Вы отметили JQuery - попробуйте использовать JQuery для вашего вызова Ajax:

$.ajax({
    url: '/Likes',
    data: { id: id },
    success: function (response) {
        if (response) {
             console.log(response);
        }
    },
     error: function (xhr, s, sa) {
         console.log(s, sa);
     },
     complete: function () {
          console.log('complete event');
     }
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню