我正在使用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的數據在響應中按預期返回!
我沒有看到足夠的信息繼續下去。什麼瀏覽器?發送的回覆文字是什麼?等等...您可能希望使用AJAX抽象。 – Incognito
如果你在'send()'方法的參數中使用了一個實際的字符串,而不是'null',會怎麼樣?我不認爲它會有什麼特別有意義的,但也許你的服務器端腳本正在尋找一個POST變量它沒有得到。只是一個想法。 – Aaron
你能展示你的Java代碼嗎? (另外,您可能應該測試狀態以及readyState。) – nnnnnn