【问题标题】:Using form how to send payload for POST as JSON使用表单如何将 POST 的有效负载作为 JSON 发送
【发布时间】:2016-11-08 15:28:09
【问题描述】:

我正在使用 HTML 通过 POST 调用下载 xlsx、pdf 文件。 我正在使用下面的代码发送我的有效负载,但它以 url 格式发送,

 <form method="post" action="{{url}}" enctype='application/json'>
<input type="text" name="type" value="{{type}}" hidden>
<input type="text" name="paramValue" value="{{value}}" hidden>
</form>


Request body
type=Shop&paramValue=Kumar

我需要将它作为 JSON 传递,因此我收到一个错误,

Response    HTTP/1.1 415 Unsupported Media Type

如果在 HTML 中使用表单,请建议如何将数据作为 JSON 传递。

【问题讨论】:

    标签: javascript html angularjs json


    【解决方案1】:

    表单enctype 属性不支持application/json,如here 所示。

    您需要手动对您的数据进行 json 编码以与您的发布请求一起使用,或者使用默认发布 json 的$http 服务:

    var data = { type: $scope.form.type, value: $scope.form.value };
    
    $http.post(url, data) // default content-type is 'application/json' for $http.post
    .success(function(data, status) {
      //yay
    });
    

    【讨论】:

    • 使用 $http 这是一个单独的 Angular 调用,我不能将它与表单操作一起使用,它需要使用 $http 传递 url,但我需要在表单和操作中构造 JSON。请建议如何实现这一目标。
    • 你不能用普通的形式来做。您需要 JavaScript 序列化为 Json 并设置请求标头内容类型。也就是说,您可以使用 onsubmit 或 onclick 与 angular 调用控制器或使用 jquery,但使用普通 HTML 表单是不可能的
    猜你喜欢
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-16
    • 1970-01-01
    相关资源
    最近更新 更多