2015-08-20 102 views
0

我正在嘗試使用$ http和get請求來調用api。我沒有找到404,當我看到這個電話時,它正在追加http://localhost:3000/到前面這是問題。我怎樣才能阻止它做到這一點?我正在使用角度和注入$ http。

app.factory('videos', ['$http', function($http){ 



    function pullData(){ 
    $http.get("api.redtube.com/data=redtube.Videos.searchVideos&output=json&search=hard&tags[]=Teen&thumbsize=medium").success(function(response){ 
    o.videos.push(response) 
    }); 
    } 

    pullData() // call the function to pull data from the API 

    var o = {videos: [] 

    }; 

    return o; 

}]) 
+0

當我包含http://在通話前我得到一個沒有訪問控制允許起源錯誤 – trebek1

+0

你可以在你提出請求的地方發佈代碼嗎?似乎沒有足夠的信息。如果您提供完整的URL,如$ http({method:'GET',url:'https://www.example.com/api/v1/resource'}),$ http應該可以正常工作。 – GPicazo

+0

我添加了上面的代碼,爲了讓它在瀏覽器中工作,我擺脫了http://但它仍然不起作用。這是網站api文檔中的默認示例 – trebek1

回答

0

問題是url,而不是$ http提供程序。你錯過了'?'字符表示數據是查詢字符串的一部分。嘗試使用這個:

app.factory('videos', ['$http', function($http){ 



function pullData(){ 
    $http.get("http://api.redtube.com/?data=redtube.Videos.searchVideos&output=json&search=hard&tags[]=Teen&thumbsize=medium").success(function(response){ 
    o.videos.push(response) 
    }); 
    } 

    pullData() // call the function to pull data from the API 

    var o = {videos: [] 

    }; 

    return o; 

}]) 

編輯:對於CORS問題,請嘗試使用JSONP

// Instead of 
$http.get(...) 
// use 
$http.jsonp(...); 
+0

XMLHttpRequest無法加載http://api.redtube.com/?data=redtube.Videos.hardVideos標籤[] = Teen&thumbsize = medium。請求的資源上沒有「Access-Control-Allow-Origin」標題。原因'http:// localhost:3000'因此不被允許訪問。 – trebek1

+0

Access-Control-Allow-Origin錯誤是一個CORS錯誤(與原始問題不同)。發生這種情況是因爲您試圖從一個域訪問資源到另一個域。由於您只是在執行GET請求,因此請嘗試使用JSONP,如上面編輯 – GPicazo

+0

所示,它表示未捕獲的SyntaxError:意外的標記:。所以我想它不支持jsonp – trebek1