【问题标题】:Ajax request response nullAjax 请求响应 null
【发布时间】:2017-05-30 07:57:05
【问题描述】:

Ajax 请求成功但响应为空,但我可以在 firebug 中看到结果响应为:

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

并且在控制台中出现错误:

TypeError:响应为空

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

【问题讨论】:

  • 请分享您的代码,如何调用 ajax 方法等
  • 能不能把ajax代码贴出来

标签: javascript php jquery ajax laravel


【解决方案1】:

您已标记 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');
     }
});

【讨论】:

    【解决方案2】:

    您能否尝试将其切换为 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-06
      • 1970-01-01
      • 1970-01-01
      • 2016-07-24
      • 2014-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多