我发送了一个POST请求cia cURL,在我的Java服务器中解析它时,没问题。
卷曲-H"内容类型:application / json" -d' {" url":" http://example.com"}' http://example-server.com/pathtoserver
我通过以下方式抓取Java中的请求:
StringBuilder buffer = new StringBuilder();
BufferedReader reader = request.getReader();
String line;
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
String data = buffer.toString();
if (logger.isInfoEnabled()) {
logger.info("Data grabbed for POST data: " + data);
}
日志声明是:
2014-09-29 16:29:19,153 [INFO] [pool-16-thread-16] LOG - Data grabbed for POST data: {"url":"http:example.com"}
但是当我通过JQUERY AJAX请求发送它时,我收到一个JSONException错误。我将请求格式化错误了吗?
$('#validate').click(function() {
alert($('#url').val());
console.log($('#url').val());
$.ajax(
{url: "/pathtoserver/",
type: "POST",
data: {url:$('#url').val()},
success: function(data) { handleValidateResponse(data); console.log(data); }
});
});
日志还说明:
2014-09-29 16:27:08,145 [INFO] [pool-16-thread-14] LOG - Data grabbed for POST data: url=http%3A%2F%2Fexample.com
现在对URL进行编码,而不是像第一个那样使用大括号({url:...})的JSON对象,它说" url = ..."
cURL与AJAX帖子请求有什么本质上的不同吗?或者我格式化错了什么?
答案 0 :(得分:1)
您需要手动将对象字符串化为JSON。 jQuery会将你的对象转换为一串键/值对。我还会添加contentType: "application/json"
仅用于安全措施:
$.ajax(
{url: "/pathtoserver/",
type: "POST",
contentType: "application/json",
data: JSON.stringify({url:$('#url').val()}),
success: function(data) { handleValidateResponse(data); console.log(data); }
});