gpt4 book ai didi

Java 无法从 AJAX POST 接收数据

转载 作者:行者123 更新时间:2023-11-30 16:52:36 25 4
gpt4 key购买 nike

我是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com