1、页面引入prototype-1.5.1_rc2.js
<script language="JavaScript">
function sendText()
{
var url = "http://localhost:8080/test/testservlet?type=send";
var text = "myText:12345";
    var request = new Ajax.Request(url, {
method: 'post',
asynchronous: true,
parameters: '',
postBody: text,
onFailure: sendFailed
});
}function sendFailed(request)
{
alert("消息发送失败!");
}
</script>2、TestServlet.java
public class TestServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("GBK");
String type = request.getParameter("type");
    String text = readRequestContent(request);
    System.out.println("type=" + type);
    System.out.println("text=" + text);
}

private String readRequestContent(HttpServletRequest request) {
StringBuffer sb = new StringBuffer();
String line = null;
try {
BufferedReader reader = request.getReader();
while((line = reader.readLine()) != null) {
sb.append(line);
}
} catch (IOException e) {

}
return sb.toString();
}}
结果打印:
type=send
text=为什么没有取到postBody的内容呢??
分不够再加!

解决方案 »

  1.   

    String text = readRequestContent(request);
    这句错了呗,更多就不知道了.
      

  2.   

    readRequestContent是我定义的一个private方法
      

  3.   

    我不使用这个prototype.js,直接创建一个XMLHttpRequest,是可以发送的
    现在可以确定问题就出在这个prototype.js里面!
      

  4.   

    同志们,问题解决了
    var request = new Ajax.Request(url, {
    method: 'post',
    asynchronous: true,
    parameters: '',
    postBody: text,
    requestHeaders:["Content-type","text/plain;charset=GBK"],
    onFailure: sendFailed
    });
      

  5.   

    之前没有在servlet中读到,是因为Ajax.Request默认为“Content-type=application/x-www-form-urlencoded”。大家可以讨论一下,为什么没有读取到?要怎么样读取出来?