为什么我的AJAX请求会收到null responseText

时间:2011-12-07 23:41:35

标签: java javascript ajax servlets

我正在使用Javascript函数向Java servlet发送请求,并且servlet将内容类型设置为“text / plain”的响应写入。 我已经使用Firebug跟踪了这一点,并且request.responseText始终为null,即使请求以状态200(OK)完成。 为什么responseText为null?

我之前尝试过使用Java客户端,它已成功收到响应。

  google.maps.event.addListener(map, 'click', function(event) {
    var request = new XMLHttpRequest();
    request.open("POST", <MY URL>, true);
    request.onreadystatechange = function() {
       if (request.readyState == 4) {
                var resp = request.responseText;
                console.log(resp);
        }
    }

    request.send(null);
  });

更新

根据给出的答案中的建议,我使用了Chrome,并查看了Javascript控制台,我注意到以下错误

XMLHttpRequest cannot load http://localhost:8080/... Origin null is not allowed by Access-Control-Allow-Origin.

在我的服务器代码中,我使用以下内容在HTTP响应中设置适当的标头

setHeader("Access-Control-Allow-Origin", "*");

瞧 - 42K的数据在回复中按预期返回!

1 个答案:

答案 0 :(得分:1)

您使用的是哪种浏览器? 尝试使用chrome并查看网络和控制台输出。

由于我正在做XDR请求,我有类似的麻烦。在FF上似乎都是正确的,并且返回了200个代码但是使用chrome有更多信息,并且会看到“Access-Control-Allow-Origin”错误。

在服务器端尝试设置“Access-Control-Allow-Origin:*”以允许来自任何源页面的请求。