我是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 ..."。客户端可以接收响应字符串。但是服务器端无法接收入站字符串。
有人可以告诉我为什么吗?
答案 0 :(得分:2)
jQuery无法为您创建JSON。您必须自己手动转换对象。您可以使用JSON.stringify
:
data: JSON.stringify({
Name: "sanmao",
Password: "sanmaoword"
}),
当您将对象作为数据传递而不执行此操作时,jQuery只是将其转换为在帖子中发送的键值对列表(格式为key1=val1&key2=val2...
而不是JSON)。