You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置XMLHttpRequest响应?返回数字却得到的问题求助

排查Servlet返回数字却得到奇怪响应的问题

嘿,我来帮你捋捋这个问题!既然文档存储到数据库的功能是正常的,那问题肯定出在Servlet的响应输出环节,大概率是这几个原因:

  • 响应编码不匹配导致乱码
    那个奇怪的字符就是乱码的典型表现。如果你的Servlet没有明确设置响应的字符编码和内容类型,服务器会用默认编码输出,前端解析时就会出现乱码。
    解决方法很简单:在Servlet输出数字之前,先加上这两行代码:

    response.setContentType("text/plain; charset=UTF-8");
    response.setCharacterEncoding("UTF-8");
    

    这会告诉服务器用UTF-8编码输出纯文本内容,前端就能正确解析了。

  • 不小心输出了多余内容
    检查下你的Servlet代码,是不是在输出数字之前/之后,不小心输出了其他东西?比如:

    • 用response.getOutputStream()写过二进制数据(和getWriter()混用会出问题)
    • 代码里有多余的out.println()、空格甚至换行符
    • 数据库操作时的二进制数据意外串到了响应流里
      你要确保Servlet只输出你想要的数字,比如:
    // 示例:返回数字1表示操作成功
    response.getWriter().write("1");
    

    别加任何多余的输出,包括空格和换行!

  • 响应类型设置错误
    如果没设置Content-Type为text/plain,浏览器可能会把响应当成HTML解析,哪怕你只返回了数字,也可能因为解析规则出现奇怪的结果。前面提到的setContentType已经包含了这个设置,所以这一步和编码问题一起解决就好。

  • 前端XHR的小细节
    可以在前端加个简单的调试,确认XHR的状态和响应:

    xhr.onload = function() {
      console.log("请求状态码:", xhr.status);
      console.log("原始响应:", xhr.responseText);
    };
    

    先确认状态码是200 OK,排除是服务器返回了错误响应(比如500内部错误却输出了奇怪内容)。

先从设置编码和内容类型开始排查,再检查Servlet的输出是否干净,应该就能解决问题啦!

内容的提问来源于stack exchange,提问作者CoqPwner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:24:08