Java无法从AJAX POST

时间:2015-05-17 04:22:56

标签: 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() {

      }
    );




在servcer方面,我使用:

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 ..."。客户端可以接收响应字符串。但是服务器端无法接收入站字符串。

有人可以告诉我为什么吗?

1 个答案:

答案 0 :(得分:2)

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

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

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