如何从angularjs中的JSONP错误回调中获取数据?

时间:2013-01-25 08:03:50

标签: angularjs jsonp

我试图从angularjs中的jsonp错误回调中获取响应消息,但响应数据未定义。我用409 http代码返回响应。如果要直接在浏览器中打开jsonp url,它会显示“angular.callbacks._0({”message“:”重置链接不正确“})”,但我无法在错误回调中收到此消息。我做错了什么?

// Extend angular app for api requests
app.factory('User', function($http) {

    var User = function(data) {
        angular.extend(this, data);
    };

    // Send link for password reset to entered email
    User.reset_password = function() {
        return $http.jsonp(jsonp_url + 'user/reset_pass?_method=post&user_key=' + user_key + '&callback=JSON_CALLBACK');
    };

    return User;
});


app.controller('ResetPasswordController', function ResetPasswordController($scope, User){

    $scope.submit = function() {

        var response = User.reset_password();

        response.then(function(data){
            //Success callback
        }, function(data){
            // Error callback
            console.log(data) // Output: {config : {...}, data: undefined}
        });
    }

});

1 个答案:

答案 0 :(得分:2)

正如Brandon Tilley所说,使用http错误代码无法从jsonp响应中获取数据。如果您仍然想要收到错误消息,您需要发送类似这样的内容{result:false,msg:'错误发生...'}和“好”的http代码,例如200。