维基百科的$ http.jsonp不起作用

时间:2015-08-24 20:39:57

标签: ajax angularjs jsonp mediawiki

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

    // 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,这里是尝试获得相同结果的代码片段:

            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!');
        });

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

  

未捕获的ReferenceError:未定义wikiCallback

请帮忙。

1 个答案:

答案 0 :(得分:1)

Angular希望您将JSONP回调函数名称定义为var wikiUrl = appSettings.wiki + $scope.address.city + '&format=json&callback=JSON_CALLBACK'; 。所以你的代码应该是:

$this->form_validation->set_rules('text', $this->lang->line('text_input_name'), 'required|trim|callback_ValidateTooltipTags['. $this->input->post('text') .']');

参考:the upgrade docs