2014-09-19 17 views
3

所以,目前我正在使用MVieDB的API開發web應用程序,它是一個AngularJS應用程序。 我只需要得到所有流行的電影,但它似乎並不工作..AngularJS --MovieDB API的錯誤

這裏是我的代碼:

var url = 'http://private-anon-7ac1c3824-themoviedb.apiary-mock.com/3/', 
    key = 'API_KEY' 
    mode = 'movie/popular'; 
$http.jsonp(url + mode + key) 
.success(function(data) { 
    alert(data); 
}).error(function(data, status) { 
    console.log(data, status); 
}); 

作爲回報,我的一切是從Chrome中的錯誤:未捕獲的SyntaxError :意外的令牌:,並且狀態變量等於'404'。 但是,我可以在Chrome Inspector中看到該列表...

I.E. :

{ 
    "page" : 1, 
    "results" : { 
     "adult" : false, 
     "id" : 82992, 
     ... 
} 

當我試圖TU使用正常的「$ http.get」請求時,它返回一個跨域的問題... 你們是否有一個想法?我看不到我的錯誤...

編輯:它似乎與其他服務器一起工作。我將URL更改爲'http://private-18cc-themoviedb.apiary.io/3/',現在它正在工作,也許這只是API的錯誤。感謝你們 !

+0

檢查完整的URL,你現在後 「模式」 加入API密鑰的權利。 – 2014-09-19 18:57:56

+0

是的,但這是API推薦的方式。此外,我可以看到數據已加載,它只是在得到它們後引發錯誤。 – 2014-09-19 19:08:55

回答

2

正確的MovieDB API(版本3)端點是http://api.themoviedb.org/3。當使用JSONP時,你應該提供一個回調。以下是您的工作代碼片段。爲了例子的緣故,它非常精細。

的JavaScript

var app = angular.module('plunker', []); 

app.controller('MyCtrl', function($scope, $http) { 
    var base = 'http://api.themoviedb.org/3'; 
    var service = '/movie/popular'; 
    var apiKey = 'just_copy_paste_your_key_here'; 
    var callback = 'JSON_CALLBACK'; // provided by angular.js 
    var url = base + service + '?api_key=' + apiKey + '&callback=' + callback; 

    $scope.result = 'requesting...'; 

    $http.jsonp(url).then(function(data, status) { 
     $scope.result = JSON.stringify(data); 
    },function(data, status) { 
     $scope.result = JSON.stringify(data); 
    }); 
}); 

模板

<body ng-controller="MyCtrl"> 
    <h3>MovieDB</h3> 
    <pre>{{ result }}</pre> 
</body> 

結果會像

enter image description here

相關 plunker這裏http://plnkr.co/edit/gwB60A

+0

非常感謝Mikko。我正在使用另一個網址,因爲他們建議僅將該網址用於製作。但我忘記了回調,這是我的錯誤。謝謝你的幫助 ! – 2014-09-22 02:16:09