2011-12-07 41 views
1

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

我以前曾尝试使用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); 
    }); 

UPDATE

按照给定的,我用Chrome和观看的Javascript控制台的答案建议我注意到以下错误

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

在我的服务器代码,我用了以下在HTTP响应中设置适当的标题

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

并且voila - 42K的数据在响应中按预期返回!

+0

我没有看到足够的信息继续下去。什么浏览器?发送的回复文字是什么?等等...您可能希望使用AJAX抽象。 – Incognito

+0

如果你在'send()'方法的参数中使用了一个实际的字符串,而不是'null',会怎么样?我不认为它会有什么特别有意义的,但也许你的服务器端脚本正在寻找一个POST变量它没有得到。只是一个想法。 – Aaron

+0

你能展示你的Java代码吗? (另外,您可能应该测试状态以及readyState。) – nnnnnn

回答

1

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

由于我在做XDR请求,我也有类似的问题。在FF一切似乎都正确,200代码返回,但与铬你有更多的信息,并会看到一个'访问控制允许起源'错误。

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

+0

客户端和服务器都是本地的。但我会用Chrome浏览器进行测试,看看会发生什么。 –

+0

现货!所以再做一次。谢谢!! –

+0

无论是否在同一台本地服务器上,有不同的方式可以进行XDR请求。 – EricSonaron

相关问题