2014-09-05 61 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结果作为炭。那是什么导致了这种意外的行为