2010-12-12 146 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見。