gpt4 book ai didi

angularjs - angularjs中jsonp请求的异常处理

转载 作者:行者123 更新时间:2023-12-04 04:48:43 25 4
gpt4 key购买 nike

我有以下代码分别请求 jsonp 数据。
在代码中“doRequestA”工作正常并返回结果。我的问题是
如果发生任何错误,我需要捕获它们。我已经尝试在
“doRequestB”,但只收到警报错误(我省略了来自 doRequestB 的回调)。

这是 fiddle http://jsfiddle.net/a4Rc2/417/

function jsonp_callback(data) {
alert(data.found);
}

function jsonp_example($scope, $http) {
$scope.doRequestA = function () {
var url = "http://public-api.wordpress.com/rest/v1/sites/wtmpeachtest.wordpress.com/posts?callback=jsonp_callback";
$http.jsonp(url);
};

$scope.doRequestB = function () {
var url = "http://public-api.wordpress.com/rest/v1/sites/wtmpeachtest.wordpress.com/posts";
$http.jsonp(url)
.success(function (data) {
alert(data.found);
}).error(function (data, status, headers, config) {
alert('error');
});
};
}

非常感谢任何建议,在此先感谢。

最佳答案

您实际上正在使用 $http.jsonp在这两种情况下都不正确。在第一种情况下,您只是看不到错误,因为您没有处理它。

使用 Angular.js 的 $http.jsonp方法,回调方法自动处理。您不应在结果字符串中使用自己的方法,而应插入 JSON_CALLBACK (完全按照书面形式)到您的字符串中。这样,您可以使用从 Angular 返回的 promise 来处理响应。如果您观察网络事件(例如,在您选择的浏览器中使用 Firebug 或开发人员工具),您将看到 JSON_CALLBACK替换为 angular.callbacks._0 *。

在第二个示例中,您根本没有定义回调方法,因此结果总是会出错。实际上没有办法处理 jsonp 结果,因为它只是返回没有回调方法的 JSON 对象,结果只是被忽略了。

这是一个工作结果:http://jsfiddle.net/tPLaN/1/

编码:

function jsonp_callback(data) {

alert(data.found);
}


function jsonp_example($scope, $http) {
$scope.doRequestA = function() {

var url = "http://public-api.wordpress.com/rest/v1/sites/wtmpeachtest.wordpress.com/posts?callback=JSON_CALLBACK";

$http.jsonp(url).success(function(data) {
jsonp_callback(data);
});
};


$scope.doRequestB = function() {

var url = "http://public-api.wordpress.com/rest/v1/sites/wtmpeachtest.wordpress.com/posts?callback=JSON_CALLBACK";


$http.jsonp(url)
.success(function (data) {

alert(data.found);

}).error(function (data, status, headers, config) {

alert('error');
});
};
}

我唯一改变的是
  • 更正这两个 URL。
  • .success() 中的第一个方法上移动回调处理程序方法上的 promise 。

  • 信不信由你,需要 JSON_CALLBACKthe documentation for $http.jsonp ,但它有点隐藏。

    * 注意,请不要使用 JSON_CALLBACK 的替换为了任何东西。这是 Angular 生成的私有(private)方法,我只是展示它以帮助更了解正在发生的事情。

    关于angularjs - angularjs中jsonp请求的异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17767800/

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