易趣购物API AngularJS意外错误

时间:2016-12-03 19:07:43

标签: javascript angularjs ionic-framework ebay-api



.stayssame {
  position: relative;
}

#headline{
  position: absolute;
  top: 50%;
  left: 0;
  right: 0;
  transform: translateY(-50%);
  margin: auto;
}

angular.module('BeautyCare', ['ionic'])
 
 .config(function($stateProvider, $urlRouterProvider) {

  $stateProvider
    .state('tabs', {
      url: "/tab",
      abstract: true,
      templateUrl: "templates/tabs.html"
    })
    .state('tabs.Store', {
      url: "/Store",
      views: {
        'Store-tab': {
          templateUrl: "templates/Store.html",
          controller: 'StoreTabCtrl'
        }
      }
    })
    
    .state('tabs.SalonGalary', {
      url: "/SalonGalary",
      views: {
        'SalonGalary-tab': {
          templateUrl: "templates/SalonGalary.html",
          controller :'SalonGalaryCtrl'
        }
      }
    })
    
    .state('tabs.Profile', {
      url: "/Profile",
      views: {
        'Profile-tab': {
          templateUrl: "templates/Profile.html"
        }
      }
    })

    .state('tabs.Alerts', {
      url: "/Alerts",
      views: {
        'Alerts-tab': {
          templateUrl: "templates/Alerts.html"
        }
      }
      });

   $urlRouterProvider.otherwise("/tab/Store");

});


.controller('StoreTabCtrl', function($scope,$http,$log) {
    var items =null;
    $log.debug('start debug');
    var url="http://open.api.ebay.com/shopping?GLOBAL-ID=EBAY-IN&QueryKeywords=Iphone&ResponseEncodingType=JSON";
    url+="&appid=API_ID&callback=JSON_CALLBACK._0";
    url+="&callname=FindPopularItems&version=713?callback=JSON_CALLBACK";
   $log.debug($http.jsonp(url)
            .success(function(data) {
            items=data;
            console.log(items);
            })
            .error(function(data) {
                //alert("ERROR");
            }));        
});




我尝试使用$ http.get没有运气,代码显示意外错误。 我感谢任何帮助解决此问题或解决方法使用$ http.get。我尝试了不同的例子,但仍未解决问题。提前致谢

1 个答案:

答案 0 :(得分:0)

让我们仔细看看您尝试发送到eBay API的网址:

http://open.api.ebay.com/shopping?GLOBAL-ID=EBAY-IN&QueryKeywords=Iphone&
  ResponseEncodingType=JSON&appid=Mawsem77f-2832-4be9-93d8-e257a245be3&
  callback=JSON_CALLBACK._0&callname=FindPopularItems&version=713?callback=JSON_CALLBACK

我计算了三个问题:

  • version参数的值无效:713?callback=JSON_CALLBACK。此参数似乎需要数字值。请注意,URL的这一部分已经在查询字符串中,因此这里的?不会被解释为查询字符串的开头或作为参数分隔符。

  • 如果URL末尾的callback=JSON_CALLBACK应该是另一个URL参数名称和值,那么您已使用两个不同的值指定了callback参数。您只需要指定一次此参数,并且还需要考虑使用哪个值。

  • 当您创建JSONP request时,您需要指定函数的名称以包装返回的JSON。但是,根据eBay API documentation,您使用了错误的参数回调函数的名称。如果参数callback的值为true,则响应将包含在对名为_cb_FindPopularItems的函数的调用中。此参数的其他值似乎被忽略。您似乎想要使用callbackname参数。因此,请尝试从您的网址中删除callback个参数,然后添加callbackname=JSON_CALLBACKcallbackname=JSON_CALLBACK._0(不清楚您打算使用哪个参数)。

    这也解释了语法错误:假设对JSONP请求的响应是可执行的JavaScript,但您获得的响应实际上是一些JSON数据。

我没有对此进行过测试,但我希望以下网址(包含可读性)可以正常工作。您可能需要将._0后缀添加到回调名称中:

http://open.api.ebay.com/shopping?GLOBAL-ID=EBAY-IN&QueryKeywords=Iphone&
  ResponseEncodingType=JSON&appid=Mawsem77f-2832-4be9-93d8-e257a245be3&
  callbackname=JSON_CALLBACK&callname=FindPopularItems&version=713

最后,请考虑更改您的易趣应用ID。您现在已将其发布在公共互联网上,任何查看此问题的人现在都可以使用它。我之前从未使用过eBay及其API,所以我会让你知道如何做到这一点。