【问题标题】:Angular $http is not sending dataAngular $http 没有发送数据
【发布时间】:2016-05-27 14:41:35
【问题描述】:

我知道这里已经解决了很多次,但我仍然无法让它工作。

我的js调用是:

var data = { value: 7 };
$http.post('api/controller/method', data);

但是在 fiddler 中没有 Content-Type 也没有 JSON 数据。 我希望 Content-Type 为“application/json”,这应该是默认的,对吧?

谢谢

【问题讨论】:

  • 还是不行。它发送的是 OPTIONS 动词而不是 POST(针对 WebApi2 发布)。当我在提琴手中撰写 POST 时,它正在工作
  • 听起来您正在尝试进行跨域 POST。如果您正在执行跨域请求,浏览器将发送 OPTIONS。
  • 是的,我是。并且在服务器上是允许的。
  • 服务器是否响应OPTIONS?服务器应该返回Access-Control-Allow-Methods: POST

标签: angularjs http http-post asp.net-web-api2


【解决方案1】:
var data = { value: 7 };
$http({
        url: "api/controller/method",
            method: "POST",
            headers: {'Content-Type': 'application/x-www-form-urlencoded'},
            data: $.param(data)
        }).success(function(data, status, headers, config) {
            //some code when success post
            }).error(function(data, status, headers, config) {
            //some code when error post
        });

【讨论】:

  • 帮助,谢谢。但是为什么 urlencoded 工作而不是 applicaion/json?
  • 而且发送7这样的简单值的时候就不行了。
  • 这个link 回答你关于urlencoded @matt-bridges 的问题
  • 为什么不能使用简单的值?,您必须在后端检查您收到的参数并给出响应
  • 当我只发送 7 时,我在服务器上读取了 0。当我将它包装成 var post = { data: 7 } 时,我在服务器上有属性 data = 7 的对象。简单的值对我不起作用..我已经在服务器端使用泛型解决了它,但我不明白为什么..
【解决方案2】:

试试这个:

var response = $http.post('api/controller/method', data);
response.success(function(data, status1, headers, config) {
    //
}

【讨论】:

    猜你喜欢
    • 2019-09-15
    • 1970-01-01
    • 2017-09-17
    • 2017-08-08
    • 2016-03-19
    • 1970-01-01
    • 2016-04-07
    • 2015-12-30
    • 1970-01-01
    相关资源
    最近更新 更多