0

使用Sencha Touch,我們如何查詢youtube v3 search api? 下面是示例URL從瀏覽器直接發行時的正常工作(注:重點需要): 「https://www.googleapis.com/youtube/v3/search?part=snippet&order=date&type=video&channelId=UC3djj8jS0370cu_ghKs_Ong&key=MY_KEYyoutube api v3在sencha touch 2中的CORS支持

但是使用煎茶觸摸商店Ajax代理加載時相同的URL失敗。 看來,OPTIONS調用是針對這個URL和GET被中止。

Sencha touch store需要什麼來配合youtube V3 google apis?我沒有找到youtube V3 api的jsonp支持。

回答

4

我已經使用這個API這樣的,

proxy: { 
      type: 'ajax', 
      url: 'https://www.googleapis.com/youtube/v3/search', 
      useDefaultXhrHeader: false, 
      extraParams: { 
       part: 'snippet', 
       q: 'ambarsariya', 
       regionCode: 'IN', 
       maxResults: 30, 
       key: 'your_key' 
      }, 
      reader: { 
       type: 'json', 
       rootProperty: 'items' 
      } 
     } 

還有一件事你必須做的,這就是爲你在這個店的模式設置idProperty。我已經使用的模型的內部配置我已經使用

idProperty: 'videoId',// its better if this name is not same as any fields name 
     fields: [{ 
      name: 'snippet' 
     }, { 
      name: 'thumbnail', 
      mapping: 'snippet.thumbnails.default.url' 
     }, { 
      name: 'title', 
      mapping: 'snippet.title' 
     }] 

希望這可以解決您的問題。

+0

Thnx。在我的情況下,缺少useDefaultXhrHeader:false。 – 2014-11-04 10:53:29

2

它適用於我。

STORE: -

Ext.define('MyApp.store.videos', { 
     extend: 'Ext.data.Store', 
     model: 'MyApp.model.Video', 
     config: { 
      autoLoad: true, 
      proxy: { 
       type: 'ajax', 

       //This is required to enable cross-domain request 
       useDefaultXhrHeader: false, 
       url: 'https://www.googleapis.com/youtube/v3/search', 

       extraParams: { 
        part: 'snippet', 
        q: "Enrique", //Query string 
        regionCode: 'IN', 
        maxResults: 30, 
        key: 'AIzaSyD6FvoLaIFqyQGoEY4oV7TEWGAJSlDd1-8' 
       } 
      } 
     } 
    }); 

This is the model used by the above store. 

MyApp.model.Video:- 

Ext.define('MyApp.model.Video', { 
    extend: 'Ext.data.Model', 
    requires: [], 

    config: { 
     idProperty: 'videoId', 
     fields: [{ 
      name: 'id' 
     }, { 
      name: 'videoId', 
      mapping: 'id.videoId' 
     }] 
    } 
}); 

它也可以很好地用於JSONP代理也

只是改變類型:JSONP內代理和刪除useDefaultXhrHeader配置。