gpt4 book ai didi

AngularJS $http.post 请求被 Chrome 取消

转载 作者:可可西里 更新时间:2023-11-01 16:33:27 25 4
gpt4 key购买 nike

我已经用谷歌搜索了几个小时...

这是我的 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 header 。 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

最佳答案

Angular 不会preventDefault()如果action参数已设置。参见 here

For this reason, Angular prevents the default action (form submission to the server) unless the element has an action attribute specified.

您可能还应该使用 ng-submit="login()<form> 上而不是 ng-click , 以便在用户按下 Enter 时提交表单

关于AngularJS $http.post 请求被 Chrome 取消,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26684991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com