java - 在 Java Servlet 中读取从 Ajax 发送的 JQuery 数据

标签 java javascript jquery ajax servlets

这是我的 Ajax 代码:

    var myJSONObject = {"bindings": [
                                     {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"}]
                             };
    $.ajax({
        url : "ships",
        data : myJSONObject,
        success : function(data){
            GLOBAL.player.startShooting(data);
        },
        error : function(data) {
            console.log("error:", data);
        },
        dataType : "json",
        timeout : 30000,
        type : "post"
    });

这是我的 Java Servlet 代码:

protected void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    System.out.println("im in PSOT");
    System.out.println(request.getParameter("myJSONObject"));

    StringBuilder sb = new StringBuilder();
    BufferedReader br = request.getReader();
    String str;
    while( (str = br.readLine()) != null ){
        sb.append(str);
    }   
    System.out.println(sb.toString());
    response.setContentType("application/json");
    response.getWriter().write("{\"key\":\"hello\",\"key2\":\"world\"}");
}

Java servlet 返回我的 Hello World 对象,但我无法读取 Java Servlet 中的数据 控制台打印出如下内容:

im in PSOT
null

最后一行是来自上次 println 的空字符串。

我正在使用 Tomcat 7

谁能告诉我我做错了什么以及为什么我不能在 Java Servlet 中读取数据_

最佳答案

参数名称不是myJSONObject。那是 JS 变量名。参数名称是您在 JSON 对象中拥有的所有根键。例如

String bindings = request.getParameter("bindings");
// ...

您只需要进一步手动解析它。你可以使用 Google Gson为此。

至于为什么Reader没有返回任何东西,那是因为请求体只能被读取和解析一次。任何 getParameter() 调用都会隐含地执行此操作。因此,当您调用 getParameter() 之前 getReader() 时,您将无法通过 Reader 读取请求正文(反之亦然!)。但无论如何你都不需要它。只需使用带有正确参数名称的 getParameter()

关于java - 在 Java Servlet 中读取从 Ajax 发送的 JQuery 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9822361/

相关文章:

java - 在指定时间安排 Java 任务

javascript - ( typescript )属性 'window' 在类型 'Global' 上不存在

javascript - 总是显示 jQuery Tipsy?

javascript - NodeJs 相当于 Java getBytes()

java - Java 对象的意外标识符(处理)

java - 下载时写入额外行的 CSV 文件

javascript - 在jsx中的渲染函数中编写条件语句

javascript - 范围错误: Maximum call stack size exceeded on my first google script function

php - 在多个页面上 POST 数据

javascript - 如何获取ckeditor中所选文本的html源