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调用
我想出了如何从这个网站解决它:
-
“要允许通过Apache Tomcat进行目录浏览,请将文件conf / web.xml中的参数”listing“从false更改为true。”
-
将您的页面调用为
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: "*")]