【问题标题】:json broken after post request发布请求后json损坏
【发布时间】:2015-07-20 15:30:28
【问题描述】:

我正在尝试将 json 对象保存在数据库中。我使用风帆作为后端,角度作为前端。

我拥有的 JSON 在调用 post 请求之前是有效的。

但是当我调用post请求时,json坏了,只发送了一部分的json。

这是我在 Angular 服务中使用的代码:

   GridService.saveTableConfig = function (key, data) {

      var test = JSON.parse(data); // Is correct no errors!

    return $http.post(config.serverUrl + "/admin/saveconfigtable/" + key +"/" + data);
  }

请在发布请求之前找到 JSON 的摘录:

"{"prefix":"","name":"Grid","columns":[{"encoded":true,"title":"Line","field":"id","editable ":false,"selectable":false,"template":"div style=\"text-align: center\">span class=\"badge bg-cyan\" style=\"font-weight: bold;font -size: 11px;\">{{dataItem.id}}/span>/div>","width":100},{"encoded":true,"title":"Status","field":" status","editable":false,"filterable":false,"width":100,"template":"div style=\"text-align: center\">span class=\"label\" ng-class=\"{'bg-danger': dataItem.businesserror!=null, 'bg-greensea': dataItem.businesserror==null}\" style=\"字体粗细:粗体;字体大小:11px;\" >{{dataItem.status}}/span>/div>"},{"encoded":true,"title":"key","type":"string","field":"key","editable ":true,"width":250,"template":"span ng-bind='dataItem.key'>#: data.key#/span>"},{"encoded":true,"title":" keyen","type":"string","field":"keyen","editable":true,"validation":{"required":true},"width":250,"template":"span ng -bind='dataItem.keyen'>#: data.keyen#/span>"},

当我发布 JSON 时,我只检索下面的完整 JSON。零件丢失或移除。它似乎在#之后:

"{"prefix":"","name":"Grid","columns":[{"encoded":true,"title":"Line","field":"id","editable ":false,"selectable":false,"template":"div style=/"text-align: center/">span class=/"badge bg-cyan/" style=/"font-weight: bold;font -size: 11px;/">{{dataItem.id}}/span>/div>","width":100},{"encoded":true,"title":"Status","field":" status","editable":false,"filterable":false,"width":100,"template":"div style=/"text-align: center/">span class=/"label/" ng-class=/"{'bg-danger': dataItem.businesserror!=null, 'bg-greensea': dataItem.businesserror==null}/" style=/"font-weight: bold;font-size: 11px;/" >{{dataItem.status}}/span>/div>"},{"encoded":true,"title":"key","type":"string","field":"key","editable ":true,"width":250,"template":"span ng-bind='dataItem.key'>"

有什么想法吗?

谢谢,

【问题讨论】:

  • “#”可能被解释为 URL 中的锚点,因此从 JSON 中删除的文本过去。
  • 我建议像$http.post(config.serverUrl + "/admin/saveconfigtable/" + key +"/" + encodeURIComponent(data));
  • 但是你必须相应地调整你的后端以在它接收到路径中的发布数据时对其进行解码。
  • 如果您已经在进行 POST,为什么不直接发送 data 作为请求正文并将请求的 Content-Type 标头值设置为 application/json
  • 嘿帕特里克。谢谢。它运作良好! mscdex:你能举个例子来说明你的想法吗?谢谢!

标签: javascript json angularjs node.js post


【解决方案1】:

好的,谢谢帕特里克。

你的解决方案很好!

$http.post(config.serverUrl + "/admin/saveconfigtable/" + key +"/" + encodeURIComponent(data)); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-18
    • 2014-09-17
    • 2020-12-11
    • 2019-10-25
    • 2019-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多