角美元http.Post:不能向服务器发送带有数据的对象.数据作为字符串工作,作为对象-不是

Angular $http.post: cannot send objects with data to server. Data as a string works, as an object - not

本文关键字:对象 数据 字符串 不是 工作 Post http 美元 不能 服务器      更新时间:2023-09-26

我想用这个函数发送数据到服务器:

var _register = function (email, password, passconfirmation) {
    var data = {
        "Email": email,
        "Password": password,
        "ConfirmPassword": passconfirmation
    };
    return $http.post('/api/Account/Register', data, {
        headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
    });
}

它不工作。我的ASP.net web api没有接收任何数据。服务器端的每个变量都是"null"。但是当我这样做的时候:

var _register = function (email, password, passconfirmation) {
    var data = "email=" + email + "&password=" + password + "&ConfirmPassword=" + passconfirmation;
    return $http.post('/api/Account/Register', data, {
        headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
    });
}

一切都很好。问题是:第一种方法比第二种方法更清晰,所以我想用第一种方法。但是我不知道怎么了:/

删除post中的header,或者像下面这样更改header

 headers: { 'Content-Type': 'application/json' }
你的代码应该是
var _register = function (email, password, passconfirmation) {
    var data = {
        "Email": email,
        "Password": password,
        "ConfirmPassword": passconfirmation
    };
    return $http.post('/api/Account/Register', data, {
        headers: { 'Content-Type': 'application/json' }
    });
}

我以前就遇到过这个问题。试着

JSON.stringify(data)

在传递给邮局之前。然后,另一端的对象绑定器应该能够接受它。

你需要这样做…

因为AngularJS使用

传输数据

Content-Type: application/json

 return $http.post('/api/Account/Register', {'dataObj' : data  }, {
        headers: { 'Content-Type': 'application/json' }
    });

你的数据应该是一个键/值对,尝试:数据变量将在参数dataObj

下到达服务器