【问题标题】:Accept input as Json in html and send http request接受输入为 html 中的 Json 并发送 http 请求
【发布时间】:2016-03-13 21:57:36
【问题描述】:

我需要接受 JSON 字符串作为其中一个文本字段中的输入,例如输入将类似于 ::

{"order":1}

在提交表单时,我正在尝试创建请求并将此输入发送到 http 请求

var body = ({"key" : input});

var request = {
                    method : 'POST',
                    url : '/xxx',
                    data : body,
                    headers : {
                        'Content-Type' : "application/json"
                    }
                };
                $http(request).success(function(response) {

                }).error(function(response) {

                });

但服务器以 400 Bad Request 响应正文输入,例如

"key": "{"order":"1"}"

是否作为服务器期望输入如
"key": {"order":"1"}

您可以看到json开头和结尾处的" "被额外附加,因为输入的类型是文本,如何实现上述预期格式或任何更好的方法.
请提出建议。

【问题讨论】:

  • 我在你的代码中没有看到key。您预期的字符串也格式不正确。
  • @MinusFour:是的,关键是要使用的实际 key:value 对的表示,谢谢我更新了问题。

标签: javascript html angularjs json input


【解决方案1】:

我不知道你从哪里得到变量“输入”,但我假设你是用 jQuery 以某种方式选择它,然后尝试使用 val() 来获取它的值。如果是这种情况,那么你得到的是一个字符串,你应该在 ajax 请求中的“数据”键中发送的应该是一个解析的 JSON。

这应该可以解决您的问题:

data : JSON.parse(input)

【讨论】:

  • 用户在文本框中的输入是 JSON,我认为parse() 会再次尝试将 Json 解析回 Json。不管怎样,我会试试这个。
【解决方案2】:

我不知道为什么input 是一个刺痛,但要克服这个问题,请将data : input, 更改为data : JSON.parse(input),

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    • 2020-09-27
    • 1970-01-01
    • 2019-08-15
    • 2013-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多