2014-09-05 98 views
1

我有以下的servlet這需要一定的論證,並將響應:獲取無效的響應回從Ajax響應

int shares= sh.viewProtfolio().getShareInfoByCompName(value); 
response.setContentType("text/plain"); 
response.getWriter().write(shares); 

而且我有以下在前端的jQuery:

$("#company").change(function(){ 
$.get('${pageContext.request.contextPath}/ajax?get=getSharesInfo&value='+ company.val(), 
    function(response) { 
    console.log(response); 
    }); 
}); 

我沒有調試上在服務器端,我確實看到我正在向響應對象寫入整數數量的共享。但在前面我得到'?'符號。不知道爲什麼,任何幫助將不勝感激。

我也嘗試設置字符編碼,但這次我得到了一些其他的隨機字符。

response.setCharacterEncoding("UTF-8"); 
+0

查看Developer Tools/Firebug的Network選項卡中的完整響應。除了共享的數量之外,servlet還必須發回一些東西。 – Barmar 2014-09-05 00:48:52

+0

剛剛檢查過它的唯一值是'?' – Sas 2014-09-05 00:54:17

+0

我不知道java-ee,但它聽起來像'response.getWriter()。write(shares)'沒有做你認爲應該做的事情。 – Barmar 2014-09-05 00:55:31

回答

0

通過將int轉換爲String並將其寫入響應來解決此問題。

Integer shares= sh.viewProtfolio().getShareInfoByCompName(value); 
response.setContentType("text/plain"); 
response.getWriter().write(shares.toString()); 

文件參考:

http://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html#write(int)

IO pritntWriter.Write(int)方法試圖編碼我的INT結果作爲炭。那是什麼導致了這種意外的行爲