【问题标题】:$http post gets canceled$http 帖子被取消
【发布时间】:2015-04-24 22:30:18
【问题描述】:

我有一个登录表单,我正在尝试向服务器发送一个发布请求,但它被取消了。

这里是控制器:

angular.module('app.signin', [])
.controller('SigninController', ['$http', function($http) 
{
    this.email      = null;
    this.password   = null;

    this.signIn = function()
    {
        var res = $http.post( 'http://api.svcassist.dev/index.php/auth/login', {email: this.email, password: this.password });

        res.success(function(data, status, headers, config) 
        {
                alert(data);
        });
    };
}]);

这里是html:

<div class="container" style="max-width:300px" ng-controller="SigninController as signin">
    <form class="form-signin">
        <h2 class="form-signin-heading">Sign In</h2>
        <label for="inputEmail" class="sr-only">Email address</label>
        <input type="email" id="inputEmail" name="email" class="form-control" placeholder="Email address" required autofocus ng-model="signin.email">
        <label for="inputPassword" class="sr-only">Password</label>
        <input type="password" id="inputPassword" name="password" class="form-control" placeholder="Password" required ng-model="signin.password">
        <br/>
        <button class="btn btn-lg btn-primary btn-block" ng-click="signin.signIn()">Sign In</button>
    </form>
</div> 

Chrome 表示请求已取消,以下是响应标头:

Request URL:http://api.svcassist.dev/index.php/auth/login
Request Headers
Provisional headers are shown
Accept:application/json, text/plain, */*
Content-Type:application/json;charset=UTF-8
Origin:http://localhost:8000
Referer:http://localhost:8000/app/index.html
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36
X-DevTools-Emulate-Network-Conditions-Client-Id:6C7F2AA6-481A-32ED-0CFC-8F4B9F5927B8
Request Payloadview parsed
{"email":"email","password":"pass"}

【问题讨论】:

  • 这些是请求头,请粘贴响应
  • 没有响应头正弦请求被取消
  • 你发布的代码不足....没有POST方法可以检查什么是坏的...我会推荐给你,学习promise模式blog.xebia.com/2014/02/23/…
  • 如果您使用的是 Angular,那么为什么要在控制器中将模型分配给该对象?而不是使用 $scope 吗?其次,您正在调用“api.svcassist.dev”主机,是您的应用程序,还是您要进行跨站点调用?
  • Beri:他使用的是“as”语法。他的控制器在范围内,所以他的变量也在范围内。

标签: javascript angularjs angularjs-http


【解决方案1】:

我建议使用 ng-submit:

html

<div class="container" style="max-width:300px" ng-controller="SigninController as signin">
    <form ng-submit="signin.signIn(signin.email, signin.email)" class="form-signin">
        <h2 class="form-signin-heading">Sign In</h2>
        <label for="inputEmail" class="sr-only">Email address</label>
        <input type="email" id="inputEmail" name="email" class="form-control" placeholder="Email address" required autofocus ng-model="signin.email">
        <label for="inputPassword" class="sr-only">Password</label>
        <input type="password" id="inputPassword" name="password" class="form-control" placeholder="Password" required ng-model="signin.password">
        <br/>
        <button class="btn btn-lg btn-primary btn-block" type="submit">Sign In</button>
    </form>
</div> 

js

this.signIn = function(email, password)
{
    var res = $http.post( 'http://api.svcassist.dev/index.php/auth/login', {email: email, password: password });

    res.success(function(data, status, headers, config) 
    {
            alert(data);
    });
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-19
    • 2017-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    • 1970-01-01
    • 2015-06-06
    相关资源
    最近更新 更多