【问题标题】:How to format AJAX POST request vs cURL?如何格式化 AJAX POST 请求与 cURL?
【发布时间】:2014-09-29 22:08:59
【问题描述】:

我正在发送一个 POST 请求 cia cURL,在我的 Java 服务器中解析它时,没问题。

curl -H "Content-Type: 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 发布请求有什么本质上的不同吗?还是我格式错误?

【问题讨论】:

  • 你读过 GET 吗?您肯定会使用 AJAX 发送 POST 请求

标签: java jquery ajax json servlets


【解决方案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); }
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    相关资源
    最近更新 更多