为什么json字符串进入http post请求而不是angularjs

时间:2016-08-17 14:11:45

标签: javascript angularjs json

我正在使用angularjs中的post请求发送一些数据 像

$http({
  method: 'POST', 
  url: url, 
  data: inputParams,
  headers: headers
})
.then(function succes(response) {
    successCallBack(response.data);
}

数据图片: enter image description here 浏览器中的结果:

Result in browser-AngularJS

我在jQuery中有类似的结果

Result in browser-JQuery

如果angularJs看起来像数据是JSON映射,那么在Backend服务器上我无法从请求体中读取它。

可能是重复的 how to get json string from angular $http post request

但是我仍然无法修复我的问题信息,有些人可以告诉我我错过了什么。

2 个答案:

答案 0 :(得分:1)

jQuery不是将请求作为JavaScript对象发送,而是将其作为表单(如querystring)编码的字符串发送。您的开发人员工具只是解码它并像对象一样显示它。

实际上看起来像是:

appId=passThrough&serviceID=OFFOFF&APIVersion=1.0...

这是传统HTML表单的标准格式。

您可以想象这对嵌套对象不起作用。

var requestData = {
    planet: 'Earth',
    moons: [
        {
            name: 'luna'
        }
    ]
}

对此类对象进行编码的表单查询字符串会出现问题。这就是现代Http Client implimentations默认使用JSON的原因。

如果你真的想使用form querystring encoding you can

答案 1 :(得分:-1)

使用此

$http({
      method: 'POST', 
      url: url, 
      data: {
           data : inputParams
      },
      headers: headers
    })
    .then(function succes(response) {
        successCallBack(response.data);
    }

在服务器端使用req.body.data对inputParams进行操作