如何格式化AJAX POST请求与cURL?
问题描述:
我正在发送POST请求cia cURL,并且在我的Java服务器中解析它时,它没有问题。如何格式化AJAX POST请求与cURL?
卷曲-H “内容类型:应用程序/ 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编码现在,再加上而不是用花括号JSON对象(网址:{url:...})之类的第一个,它说“url = ...”
cURL vs AJAX post请求有什么内在的不同吗?或者我格式化错了什么?
答
您需要手动将对象串化为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); }
});
您是否阅读GET?您肯定会通过AJAX发送POST请求 – 2014-09-29 22:15:34