Java 无法从 AJAX POST 接收数据

标签 java javascript jquery ajax

我是 jquery 的新手。我正在测试一个非常简单的例子。服务器端(使用java)从客户端接收数据,在控制台打印。然后响应给客户端另一个字符串。

在客户端,我使用:

$.ajax({
      type: "POST",
      url: "http://localhost:8080/",
      data: {
        Name: "sanmao",
        Password: "sanmaoword"
      },

      contentType: "application/json; charset=utf-8",
      dataType: "jsonp",
      jsonp: "jsonpcallback",
      jsonpCallback: "bc",
      success: function(response) {
        alert(response[0].name + " " + response[1].name);
        //$("#msg").html(decodeURI(data));
      },
      error: function() {

      }
    );

在服务端,我使用:

InputStream is = exchange.getRequestBody();
        BufferedReader in = new BufferedReader(new InputStreamReader(is));

        String temp = "";
        try {

            // s = ArticleExtractor.INSTANCE.getText(in);
            temp = in.readLine();
            System.out.println("client request: " + temp);
        } catch (IOException e) {
            System.out.println("Processing failed");
        }

        Headers responseHeaders = exchange.getResponseHeaders();

        responseHeaders.set("Content-Type", "text/plain");

        OutputStream responseBody = exchange.getResponseBody();
        String s = "bc([{\"lng\":\"" + lng1 + "\",\"lat\":\"" + lat1 + "\",\"name\":\"" + name1 + "\"},{\"lng\":\""
                + lng2 + "\",\"lat\":\"" + lat2 + "\",\"name\":\"" + name2 + "\"}])";
        exchange.sendResponseHeaders(200, 0);
        responseBody.write(s.getBytes());
        responseBody.close();

但它不起作用。如果我删除“数据:...”和“contentType ...”。客户端可以接收响应字符串。但是服务器端无法接收入站字符串。

谁能告诉我为什么?

最佳答案

jQuery 无法为您创建 JSON。您必须自己手动转换对象。您可以使用 JSON.stringify :

data: JSON.stringify({
    Name: "sanmao",
    Password: "sanmaoword"
}),

当您将一个对象作为数据传递而不执行此操作时,jQuery 会将其简单地转换为在帖子中发送的键值对列表(格式为 key1=val1&key2=val2...而不是 JSON)。

关于Java 无法从 AJAX POST 接收数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30283337/

相关文章:

javascript - 错误 :id is already registered

javascript - 使用 dropzone 上传照片时显示错误

php - 当你有一个非常复杂的数据库时如何有效地管理 session

jquery - 使用 jquery 验证单选按钮?

c# - 如何让标签中的文字闪烁?

java - 如何拆分/解析 Java 字符串以清晰地显示项目符号点?

java - 使用 RxJava 和 Retrofit 进行 N 个连续的 api 调用

javascript - 在提交表单之前显示表单数组输入值

java - 在没有 PageFactory 的 Selenium 中使用 @FindBy

javascript - flot legend,如何隐藏并使用彩色瓷砖