ajax问题 – 在萤火虫中200 OK,但没有响应体的红色消息

我看到了与跨域相关的小ajax问题。

在localmachine上我用一些ajax创建了html示例:在注册文本字段中用户类型’username’,在每次击键时ajax将它发送到本地Tomcat,其中servlet检查该用户名是否已被使用并发送’take’响应。

在localhost上没问题。 只要我输入’username’,servlet就会发送’take’响应,浏览器会显示它。

但是,当我在远程机器上放置带有ajax的html页面(远程网络上的一些免费托管),在我的localhost Tomcat上发送validation请求时,建立连接,在Tomcat控制台中我看到请求即将发生,并且在Mozzila中的firebug中这是控制台输出继电器:

GET http://89.216.182.25:8080/Dinamicki1/UsernameServlet?username=zik 200 OK 

…但是在响应选项卡中没有’采取’servlet响应,并且firebug中的消息是红色的

所以服务器通信良好,没有防火墙问题,响应是200 OK
但是反应机构是空的。

任何想法萤火虫中的这些红色信息是什么?

非常感谢你提前。

如果有人可以为java推荐一些严肃的ajax教程,将非常感谢:)

您需要在Ajax请求中使用域相对URL:

  / Dinamicki1 / UsernameServlet?用户名= ZIK 

或者上下文相关的URL(假设页面是从/Dinamicki1 ):

  UsernameServlet?用户名= ZIK 

关于“Ajax Java for Java”,实际上并不是真的。 这些只是两种不同的技术。 然而,我建议你开始使用jQuery (用于客户端)和Google Gson (用于服务器端)和JSON (作为客户端和服务器之间的通信语言)。

您无法使用AJAX读取其他域的回复。

您的HTML必须与AJAX servlet位于同一服务器(以及相同的域,端口和协议)上。

Firebug中报告的200状态并不表示跨域ajax调用的有效性,无论是否成功。

您可能想尝试使用代理方法来执行调用。

例如JavaScript:使用Web代理进行跨域XMLHttpRequest调用

我想出了如何从这个网站解决它:

  1. “要允许通过Apache Tomcat进行目录浏览,请将文件conf / web.xml中的参数”listing“从false更改为true。”

  2. 将您的页面调用为C:/Documents and Settings/.../page.html但作为localhost:8080/your_servlet_name (页面更好地命名为index.html )。

这样,您就可以向localhost:8080/your_servlet_name/something_else发出AJAX请求localhost:8080/your_servlet_name/something_else

一个对我有用的解决方案是我必须在url中添加“www”! 我正在使用URL Rewrite,所以我拥有的每个URL(图像,js,获取,加载,发布),我需要使用完整的URL,但它缺少“www”!

对我来说,这是web api(c#.NET)请求并且未启用cors。 在控制器上为cors添加了标题,它解决了问题。

 [EnableCors(origins: "*", headers: "*", methods: "*")]