我尝试使用Angular $ http.post(url,data)方法。但我面临一些问题,要将正确的数据发布到服务器(WebAPI)。我尝试了以下选项,但没有一个正在运作。
var data1 = new Object();
data1.UserName = "UserA1";
data1.Password = "password123";
data1.ConfirmPassword = "password123";
var data2 = angular.toJson(data1);
var data3 = JSON.stringify(data1);
var data4 = { UserName: "UserA2", Password: "password123", ConfirmPassword: "password123" };
var data5 = "UserName=UserA3&Password=password123&ConfirmPassword=password123";
$http.post(url, data1)
$http.post(url, data2)
$http.post(url, data3)
$http.post(url, data4)
$http.post(url, data5)
没有工作。什么样的数据对于这种方法是正确的。我尝试使用上面的数据JQuery.post(),它的工作原理。它对我来说非常奇怪,为什么这个简单的angularjs方法如此难以使用或者我遗漏了一些东西。
更新: 基本上我正在研究以下示例。我想从客户端注册用户( / api / Account / Register )。 http://www.asp.net/web-api/overview/security/individual-accounts-in-web-api
答案 0 :(得分:0)
这是因为您的服务器端需要一个内容为x-www-form-urlencoded
的请求。
jQuery的$.post()
发送内容类型为application/x-www-form-urlencoded
的请求,而Angular的$http.post()
发送内容类型为application/json
的请求(并对数据进行编码)如果传递JS对象,则为JSON(表单数据的instad)。
有些方法可以使用$http
发送x-www-form-urlencoded请求(并且SO上有几个相关的答案),但它涉及的代码不那么简单。
我建议您更改服务器端以使用JSON请求。
答案 1 :(得分:0)
根据您在服务器端的内容,您应该转换您的请求(例如,PHP的情况,或者您可以从输入流中读取:php:// input)。
请参阅此要点:https://gist.github.com/JensRantil/5713606。
如果这不能解决您的问题,请检查角度正在创建的请求(例如,使用Chrome中的开发者工具 - >网络标签),并告诉我们您的看法。