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

Posted

技术标签:

【中文标题】如何从 angularjs 中的 JSONP 错误回调中获取数据?【英文标题】:How to get data from JSONP error callback in angularjs? 【发布时间】:2013-01-09 04:12:04 【问题描述】:

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

// 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
        );
    

);

【问题讨论】:

这是 JSONP 的限制。见***.com/a/1002797/62082。 【参考方案1】:

正如 Brandon Tilley 所说,无法从带有 http 错误代码的 jsonp 响应中获取数据。如果您无论如何都希望收到错误消息,则需要发送类似 result: false, msg: 'Error occurred...' 的“好”http 代码,例如 200。

【讨论】:

以上是关于如何从 angularjs 中的 JSONP 错误回调中获取数据?的主要内容,如果未能解决你的问题,请参考以下文章

带有 AngularJS 的 Windows Phone 8.1 上的 Phonegap 无法从我的 API 中检索 JSONP

如何自定义设置 angularjs jsonp 回调名称?

JsonP 返回“未捕获的语法错误:意外的令牌:”AngularJS - routingnumbers.info

angularjs中jsonp请求的异常处理

AngularJS中的JSONP实践

AngularJS 中的 JSONP 请求不像 jQuery 那样工作