【问题标题】:$http POST not returning correct response$http POST 没有返回正确的响应
【发布时间】:2017-08-04 19:28:26
【问题描述】:

我遇到的问题是 $http POST 没有返回正确的响应。 我需要的数据存储在 config 而不是 data

Http POST 请求:

for (var i = 0; i < filmService.filmData.length; i++) {
      filmData.push({
        title     :    filmService.filmData[i].title,
        overview  :    filmService.filmData[i].info,
        poster    :    filmService.filmData[i].poster,
        genres    :    filmService.filmData[i].genres,
        release   :    filmService.filmData[i].release

      }); 
}
  var data = angular.toJson(filmData[0]);


     $http({
            method: 'POST',
            url:'/search',
            data: data,
            headers: {
              'Content-Type': 'application/json;charset=utf-8'
          },
        }).then(function successCallback(response) {
            console.log(response); //response received
    });

我在控制台中得到的响应 - 以红色突出显示的是我需要的数据:

【问题讨论】:

  • 看起来您已经突出显示了您从客户端发送的数据——您的 filmData 对象,即您发布的内容。您的响应对象上的其他数据看起来像实际的服务器响应。 (当然我不知道你期望这个 API 返回什么。)
  • 是的,文档解释了它。 docs.angularjs.org/api/ng/service/$http 'config' 属性只是原始请求参数。
  • @georgeawg 问题出在服务器端,感谢该问题也已得到修正。

标签: javascript angularjs post http-post angularjs-http


【解决方案1】:

这样做,你应该得到你想要的:

  $http({
        method: 'POST',
        url:'/search',
        data: data,
        headers: {
          'Content-Type': 'application/json;charset=utf-8'
      },
    }).then(function successCallback(response) {
        var data = response.data
        console.log(data); //response received
});

【讨论】:

  • 嗨@Ohjay44,这似乎不起作用,它只给了我(数据:id和发布)中的值。我希望 (config: > data:) 中的值以红色突出显示。
  • 配置是您发送的而不是您接收的。您只从服务器接收 id 和 release。在您的服务器端代码确保您返回所有您需要的数据,
  • @Yacub 你已经有了这些值——你自己构建了这些数据。
  • 数据似乎没有传递到服务器。
  • 没关系,我忘了在我的应用程序上需要 body-parser。这就是为什么我没有将任何结果传递给服务器的原因。感谢@Ohjay44 的帮助!还有@struthersneil!
【解决方案2】:

在您的 .then 函数中返回 config.data。

结果会是这样的

$http({
        method: 'POST',
        url:'/search',
        data: data,
        headers: {
          'Content-Type': 'application/json;charset=utf-8'
      },
    }).then(function successCallback(response) {
        var data = response.config.data
        console.log(data); //response received
});

【讨论】:

  • 配置是你发送不接收的内容。
猜你喜欢
  • 1970-01-01
  • 2019-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-06
  • 1970-01-01
相关资源
最近更新 更多