2017-05-30 203 views
-1

Ajax请求是成功的,但响应为空,但我可以看到结果回应萤火虫为:Ajax请求的响应空

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

并在控制台中存在误差为:

类型错误:响应为空

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代码 – Exprator

回答

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'); 
    } 
}); 
0

你可以试试这个切换到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);