XMLHttpRequest的空响应

时间:2015-10-15 07:11:24

标签: javascript ajax xmlhttprequest

在我的Java Web应用程序中,我调用ajax请求,如下所示。

<script type="text/javascript">
function selectTableHandler() {
    console.log("indise selectTableHandler");
    var xhttp = new XMLHttpRequest();

    var selectedTable = document.getElementById('selectTable').value;
    alert(selectedTable);
    xhttp.open("GET", "populateTableColumList.action?tablename="
            + selectedTable, true);
    xhttp.send();
    console.log(xhttp.responseText);
}
</script>

Action正在调用并返回状态代码200,如下所示。

Remote Address:[::1]:8080
Request        URL:http://localhost:8080/ReportBuilder/populateTableColumList.action?tablename=films
Request Method:GET
Status Code:200 OK

但是,它给出了XMLHttpRequest的空响应。行 console.log(xhttp.responseText); 不打印任何内容。此外,控制台日志中没有错误。

任何建议都将不胜感激。

由于

3 个答案:

答案 0 :(得分:4)

您需要添加一个回调函数来获取ajax请求的结果。

xhttp.onreadystatechange = function() {
  if (xhttp.readyState == 4 && xhttp.status == 200) {
    console.log(xhttp.responseText);
  }
}

答案 1 :(得分:2)

您的ajax请求是异步的。这意味着它会在稍后的某个时间返回结果。您需要为onloadonreadystatechange安装事件处理程序才能获得结果。

有很多关于如何执行此操作的Ajax教程。以下是一些有用的参考资料:

https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest

答案 2 :(得分:2)

如果你想使用vanilla js,你必须附加将处理响应的事件处理程序l = l[-1:] + l[0:-1] ,但是我的建议而不是使用vanilla js,使用像onreadystatechange这样的库来启动ajax请求。它将更容易,它将在所有类型的浏览器上运行没有问题。见here。如果你想要vanilla js,这里有一个示例片段:

jQuery