【问题标题】:$http.post not working with JSON data$http.post 不适用于 JSON 数据
【发布时间】:2013-09-03 09:04:55
【问题描述】:

我正在使用AngularJS 构建一个应用程序,并且我有一个登录表单,我想从中发送JSON 数据作为请求正文。

在我的控制器中;

$scope.credentials = {userid: $scope.userid, password: $scope.password};
$scope.login = function () {
$http({
                method : 'POST',
                url    : 'http://localhost/login.json',
                data   : $scope.credentials,
                headers: {'Content-Type': 'application/json'}
            }).success(function (data) {
                // code
            }).error(function (data, status, headers, config) {
            $scope.status = status + ' ' + headers;
            console.log($scope.status);
        });
};

但是当我提交表单时,POST 请求没有执行,并且我在控制台中收到一条消息,例如;

0 function (name) {
"use strict";

    if (!headersObj) headersObj =  parseHeaders(headers);

    if (name) {
      return headersObj[lowercase(name)] || null;
    }

    return headersObj;
  }

我在这里做错了什么?

如果我换行

headers: {'Content-Type': 'application/json'}

headers: {'Content-Type': 'application/x-www-form-urlencoded'}

正在发出 POST 请求。但我不想将其作为表单值发送,而是将请求作为 JSON 发送。

【问题讨论】:

  • 查看 chrome\ firebug 浏览器控制台,了解发出的请求和收到的响应。
  • 没有发出请求,而是显示一条消息,就像我在问题中粘贴的那样。
  • 如果myurl 是一个字符串变量,它不应该有引号''
  • url 实际上不是'myurl'。我只是在我的问题中使用它。编辑了我的问题。请看一看。
  • 你在服务器上使用什么来处理请求? Web 框架可能不接受帖子的“应用程序/json”内容类型。 POST json 时返回什么状态码?

标签: http post angularjs


【解决方案1】:

您应该将 javascript 对象编码为相应的 mime 类型数据,以便发布数据。如果您使用的是 jQuery,请尝试使用 $.param($scope.credentials) 而不仅仅是 $scope.credentials

【讨论】:

  • 它不工作。我认为在我们将请求正文作为表单值发送时正在使用此步骤。我需要将请求正文作为 JSON 发送。
  • 尝试完全删除headers:参数。
【解决方案2】:

我认为问题在于您是 POSTing 到 http://localhost/login.json,这不是任何能够接收带有表单数据的 POSTrequests 的脚本。

【讨论】:

    猜你喜欢
    • 2016-08-11
    • 2014-04-18
    • 1970-01-01
    • 2017-11-10
    • 2016-11-11
    • 1970-01-01
    • 1970-01-01
    • 2011-03-22
    • 1970-01-01
    相关资源
    最近更新 更多