$ http服务不会触发成功或错误回调

时间:2016-05-10 18:50:49

标签: javascript angularjs http get

这是我的部分观点 -

<form action="" ng-controller="Ctrl as forgot" name="forgotForm" ng-submit="forgotForm.$valid && forgot.sendPost()">
        <div class="form-group row">
            <label for="email" class="col-sm-2 form-control-label">Email address</label>
            <div class="col-sm-9">
                <input type="email" ng-model="forgot.emailData" class="form-control" id="email" name="email" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,3}$" placeholder="Email Address" required/>
            </div>
        </div>

        <div class="form-group row">
            <div>
                <button class="btn btn-info submitButton">Submit</button>
            </div>
        </div>
    </form>

这是我控制器中的方法 -

self.sendPost = function() {
        console.log(self.emailData); //the value I entered in the input box
        $http.get("https://api?email=rq895@msstae.edu")
            .success(function(data, response, headers, config) {
                 console.log("Success Data " + response);
             })

             .error(function(data, response, headers, config) {
                 console.debug("Returned Data ");
             });
    };

例如,如果我在输入框中输入值abc@abc.com,我会看到我在表单中输入的实际值已发送到api(self.emailData的值)。我收到200的答复。

以下是我遇到的问题,

1)当我明确指定要发送的电子邮件地址为self.emailData时,为什么会发送rq895@msstae.edu

2)由于我的响应为200,为什么成功回调没有被解雇。

2 个答案:

答案 0 :(得分:0)

不推荐使用成功和错误。尝试将代码重构为:

self.sendPost = function() {
    console.log(self.emailData); //the value I entered in the input box
    $http.get("https://api?email=rq895@msstae.edu")
    .then(function successCallback(response) {
       console.log(response)
    }, function errorCallback(response) {
       console.debug(response);
    });
};

答案 1 :(得分:0)

第一个提示:  请不要在控制器中有业务逻辑。将其移入服务并将服务注入控制器。 根据您的回答,尝试使用然后与成功和错误处理程序。它的一个例子是beloe

$http.get(URL).then(successCallback, errorCallback);

function successCallback(){

}

function errorCallback(){

}

希望这会有所帮助。

快乐学习:)