我一直在谷歌搜索这几个小时......
这是我的angularJS代码:
var FrontControllers = angular.module('FrontControllers', [] );
FrontControllers.controller('LoginController', ['$scope', '$http', function($scope, $http){
$scope.user = {};
$scope.login = function() {
console.log($scope.user);
$http({
url: '/webapi/login',
method: 'POST',
data: $scope.user
}).success(function (data) {
alert("success!");
}).error(function(data) {
alert("failed =(");
});
};
}]);
这是附带的html
<div ng-controller="LoginController" id="login" class="box">
<form novalidate role="form" action="/webapi/login" id="loginForm">
<label for="signin" class="sr-only">Email or Username</label>
<input ng-model="user.username" type="text" autofocus class="form-control input-lg" id="username" name="username" size="20" placeholder="email or username">
<label for="password" class="sr-only">Password</label>
<input ng-model="user.password" type="password" class="form-control input-lg" id="password" name="password" size="10" placeholder="password">
<button ng-click="login()" type="submit" class="btn btn-lg btn-bright btn-block">Login</button>
</form>
</div>
无论我做什么,我最终都会收到取消的POST请求。我以前成功使用标准的jQuery ajax代码登录/ webapi / login。服务器配置为AJAX,因此不需要urlencode标头。 Payload看起来正确,与jQuery ajax发送的相同。
可能是什么问题?
这是来自Chrome开发者/网络:
Provisional headers are shown
Accept:application/json, text/plain, */*
Content-Type:application/json;charset=UTF-8
Origin:http://ec2-54-86-242-50.compute-1.amazonaws.com
Referer:http://ec2-54-86-242-50.compute-1.amazonaws.com/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36
X-DevTools-Emulate-Network-Conditions-Client-Id:BB96CDC3-AD63-D024-E814-4726DF4843D8
答案 0 :(得分:2)
如果设置了preventDefault()
参数,Angular将不会action
。见here
出于这个原因,Angular会阻止默认操作(表单提交到服务器),除非该元素指定了action属性。
您可能还应该使用ng-submit="login()
而不是<form>
上的ng-click
,以便在用户按Enter键时提交表单
答案 1 :(得分:0)
尝试删除表格
action="/webapi/login"
和按钮
type="submit"