angularJS:http请求配置url必须是一个字符串

时间:2016-03-16 09:54:44

标签: javascript angularjs

我有一个从前端获取输入的函数,然后将该输入合并到我想从维基百科获取的URL中。由于我遇到CORS问题,我将$ http.get实现为JSONP,现在我收到以下错误:

  

angular.js:13236错误:[$ http:badreq] Http请求配置网址   必须是一个字符串。收稿日期:   { “方法”: “JSONP”, “URL”: “https://en.wikipedia.org/w/api.php?action=query&format=json&uselang=user&prop=extracts%7Cpageimages&titles=Maya+Angelou&piprop=name%7Coriginal”}

问题是,他的错误将连接的url显示为字符串?

有人能指出我做错了吗?

这是我打电话的功能:

//function to get author info from wikipedia
$scope.getAuthorInfo = function(author) {
    //remove whitespace from author
    author = author.replace(/\s/g, '+');
    //concat the get URL
    var url = 'https://en.wikipedia.org/w/api.php?action=query&format=json&uselang=user&prop=extracts%7Cpageimages&titles=' +
        author + '&piprop=name%7Coriginal';
    //get author info from wikipedia    
    $http.get({
            method: 'JSONP',
            url: url
        })
        .then(function successCallback(response) {
            $scope.author = response.data;
            //for every result from wikipedia, trust the extract as html
            for (var x in $scope.author.query.pages) {
                $scope.author.query.pages[x].extract = $sce.trustAsHtml($scope.author.query.pages[x].extract);
            }

        }, function errorCallback(response) {
            console.log(response);
        });
};

如果您需要其他信息,请告诉我们。

1 个答案:

答案 0 :(得分:10)

$http({
  method: 'JSONP',
  url: url
}).then(function successCallback(response) {
  // ok
}, function errorCallback(response) {
  // ko
});

$http.get$http({ method: 'GET' })的{​​{3}},并且希望将该网址作为第一个参数。

当您使用JSONP时,您还可以使用shortcut method

$http.jsonp(url).then(function successCallback(response) {
  // ok
}, function errorCallback(response) {
  // ko
});