2010-12-12 59 views
0

我用jquery ajax使用servlet时遇到了问题。当我将包含js代码的html文件与servlet放在同一个项目中时,它将起作用。但是,当我在另一台机器上使用这个html并使用URL:http://192.168.1.5:8084/****/Servlet作为ajax时,我什么都得不到。jquery ajax与servlet

$.ajax({ 
    url:'http://192.168.1.5:8084/****/Servlet', 
    data: ajaxdata, 
    type:'GET', 
    dataType:'text/html', 
    //contentType: "text/html", 
    success:function(json) { } 
}); 

那么有什么想法?谢谢。

回答

0

!拼图

在阿贾克斯这就是所谓的同源策略的问题,它会工作,如果两者都在同一台服务器上。

读这个环节,它非常漂亮

Ways to circumvent the same-origin policy

http://www.petefreitag.com/item/703.cfm 

在组搜索上流过,你会得到很多答案

+0

哦。非常感谢。我是否必须使用真正的webservice而不是servlet来实现这样的事情?例如,你可以从web服务的URL – jigsaw 2010-12-12 20:16:23

+0

得到一些数据我明白。这是关于阿贾克斯不服务。 Ajax有这个“同源”策略。但是我仍然可以访问一个servlet来获取我需要的一些数据。 – jigsaw 2010-12-12 20:31:05

0

不能使用AJAX请求发送到不同的网站。

0

这是因为您正在制作跨域ajax。浏览器倾向于禁止这种情况,因为这是一个安全问题。

请参阅herehere

(显然,你不会有任何问题的时候都在同一台服务器上)

3

如果你控制了servlet中,设置HTTP Access-Control头。通过这种方式,您可以从服务器端控制是否允许激发XMLHttpRequest的客户端处理响应。任何最近(和体面)的网页浏览器都会采取相应的行动。

下面是一个例子:

response.setHeader("Access-Control-Allow-Origin", "*"); // Everone may process the response. 
response.setHeader("Access-Control-Allow-Methods", "GET"); // Commaseparated string of allowed request methods. 

另一种方法是JSONP,也this article见。