2011-12-07 46 views
1

我正在使用Javascript函數向Java servlet發送請求,並且servlet寫入內容類型設置爲「text/plain」的響應。 我用Firebug跟蹤了這一點,並且request.responseText始終爲null,即使請求以狀態200(OK)結束。 爲什麼responseText爲空?爲什麼我的AJAX請求收到空responseText

我以前曾嘗試使用Java客戶端,它已成功接收響應。

google.maps.event.addListener(map, 'click', function(event) { 
    var request = new XMLHttpRequest(); 
    request.open("POST", <MY URL>, true); 
    request.onreadystatechange = function() { 
     if (request.readyState == 4) { 
       var resp = request.responseText; 
       console.log(resp); 
     } 
    } 

    request.send(null); 
    }); 

UPDATE

按照給定的,我用Chrome和觀看的Javascript控制檯的答案建議我注意到以下錯誤

XMLHttpRequest cannot load http://localhost:8080/... Origin null is not allowed by Access-Control-Allow-Origin. 

在我的服務器代碼,我用了以下在HTTP響應中設置適當的標題

setHeader("Access-Control-Allow-Origin", "*"); 

並且voila - 42K的數據在響應中按預期返回!

+0

我沒有看到足夠的信息繼續下去。什麼瀏覽器?發送的回覆文字是什麼?等等...您可能希望使用AJAX抽象。 – Incognito

+0

如果你在'send()'方法的參數中使用了一個實際的字符串,而不是'null',會怎麼樣?我不認爲它會有什麼特別有意義的,但也許你的服務器端腳本正在尋找一個POST變量它沒有得到。只是一個想法。 – Aaron

+0

你能展示你的Java代碼嗎? (另外,您可能應該測試狀態以及readyState。) – nnnnnn

回答

1

您正在使用哪種瀏覽器? 嘗試使用chrome並查看網絡和控制檯輸出。

由於我在做XDR請求,我也有類似的問題。在FF一切似乎都正確,200代碼返回,但與鉻你有更多的信息,並會看到一個'訪問控制允許起源'錯誤。

在您的服務器端嘗試設置「Access-Control-Allow-Origin:*」以允許來自任何源頁面的請求。

+0

客戶端和服務器都是本地的。但我會用Chrome瀏覽器進行測試,看看會發生什麼。 –

+0

現貨!所以再做一次。謝謝!! –

+0

無論是否在同一臺本地服務器上,有不同的方式可以進行XDR請求。 – EricSonaron

相關問題