AngularJS $ http.post简单方法不起作用

时间:2014-05-03 18:01:01

标签: javascript jquery asp.net-mvc angularjs asp.net-web-api

我尝试使用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

2 个答案:

答案 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中的开发者工具 - >网络标签),并告诉我们您的看法。