【问题标题】:$http.jsonp for wikipedia doesnt work维基百科的 $http.jsonp 不起作用
【发布时间】:2015-11-18 09:52:49
【问题描述】:

我在 jQuery 中有一个小项目,它通过 jsonp 技术调用 wikipedia API。 这是jQuery中代码的sn-p:

    // load wikipedia data
var wikiUrl = 'http://en.wikipedia.org/w/api.php?action=opensearch&search=' + cityStr + '&format=json&callback=wikiCallback';
var wikiRequestTimeout = setTimeout(function(){
    $wikiElem.text("failed to get wikipedia resources");
}, 8000);

$.ajax({
    url: wikiUrl,
    dataType: "jsonp",
    jsonp: "callback",
    success: function( response ) {
        var articleList = response[1];

        for (var i = 0; i < articleList.length; i++) {
            articleStr = articleList[i];
            var url = 'http://en.wikipedia.org/wiki/' + articleStr;
            $wikiElem.append('<li><a href="' + url + '">' + articleStr + '</a></li>');
        };

        clearTimeout(wikiRequestTimeout);
    }
});

我正在尝试在 AngularJS 中转换为 $http.jsonp,这是试图获得相同结果的代码的 sn-p:

            var wikiUrl = appSettings.wiki + $scope.address.city + '&format=json&callback=wikiCallback';

        $http.jsonp(wikiUrl).success(function(res){
            console.log(res);

        }).error(function(){
            console.log('Wrong entry for Wikipedia!');
        });

但它得到任何东西,我有以下错误

Uncaught ReferenceError: wikiCallback is not defined

请帮忙。

【问题讨论】:

  • 查看$http.jsonp docs...您没有正确指定回调
  • @charlietfl:感谢将回调从 wikicallback 更改为 JSON_CALLBACK 解决了问题

标签: ajax angularjs jsonp mediawiki


【解决方案1】:

Angular 希望您将 JSONP 回调函数名称定义为 JSON_CALLBACK。所以你的代码应该是:

var wikiUrl = appSettings.wiki + $scope.address.city + '&format=json&callback=JSON_CALLBACK';

参考:$http.jsonp

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    • 2016-08-16
    • 2010-10-12
    • 2011-04-22
    相关资源
    最近更新 更多