我看到了与跨域相关的小ajax问题。
在localmachine上我用一些ajax创建了html示例: 在注册文本字段中用户类型'用户名', 在每次按键上ajax将其发送给 本地Tomcat,其中servlet检查是否已使用该用户名 并发回“接受”的回复。
在localhost上没问题。 只要我输入'username',servlet就会发送'take'响应 和浏览器显示它。
但是,当我把测试html页面与ajax 在远程机器上(远程网络上的一些免费托管) 在我的localhost Tomcat上发送验证请求, 连接, 在Tomcat控制台中我看到请求来了, 在Mozzila的萤火虫中,这是控制台输出:
GET http://89.216.182.25:8080/Dinamicki1/UsernameServlet?username=zik 200 OK
...但是在回复标签中 没有servlet响应'采取' 和firebug中的消息是红色的
因此服务器通信良好,没有防火墙问题,响应为200 OK
但是反应机构是空的。
任何想法萤火虫中的这些红色信息是什么?
非常感谢你。
如果有人可以为java推荐一些严肃的ajax教程 我们将非常感激:)
答案 0 :(得分:17)
您需要在Ajax请求中使用域相对URL:
/Dinamicki1/UsernameServlet?username=zik
或上下文相关的URL(假设页面是从/Dinamicki1
提供的):
UsernameServlet?username=zik
关于“用于Java的Ajax教程”,实际上并不是真的。这些只是两种不同的技术。但是,我建议您开始使用jQuery(对于客户端)和Google Gson(对于服务器端)和JSON(作为客户端和服务器之间的通信语言)。
答案 1 :(得分:5)
您不能使用AJAX来阅读其他域的回复。
您的HTML必须与AJAX servlet位于同一服务器(以及相同的域,端口和协议)上。
答案 2 :(得分:2)
Firebug中报告的200状态并不表示跨域ajax呼叫的有效性,无论是否成功。
您可能想尝试使用代理方法来执行调用。
E.g。 JavaScript: Use a Web Proxy for Cross-Domain XMLHttpRequest Calls
答案 3 :(得分:1)
我想出了如何从this site解决它:
“允许通过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请求。
答案 4 :(得分:0)
对我有用的解决方案是我必须在网址中添加“www”!我正在使用URL Rewrite,所以我拥有的每个URL(图像,js,获取,加载,发布),我需要使用完整的URL,但它缺少“www”!
答案 5 :(得分:0)
对我来说,这是web api(c#.NET)请求并且未启用cors。 在控制器上为cors添加了标题,它解决了问题。
Column1 Column2 Column3 Column4
X Y D L
X Y L L
X Y L D