2012-07-18 84 views
0

每當我嘗試使用sencha touch來獲得json feed時,我總是會得到這個錯誤。Sencha touch get json error

XMLHttpRequest cannot load http://api.example.com/index.php/news/all/format/json?_dc=1342630239638&node=root. Request header field X-Requested-With is not allowed by Access-Control-Allow-Headers. 

如何解決圍繞工作停止這個我真的想與煎茶工作,但我的大部分工作將JSON源合作???

任何幫助

也是我的JSON輸出看起來像這樣它沒有一個rootproperty節點?

[{ 
    "id": "7253", 
    "title": "hello", 
    "description": "", 
    "source": "syrianews", 
    "cat_name": "Syrianews" 
}, { 
    "id": "7208", 
    "title": "hello", 
    "description": "", 
    "source": "syrianews", 
    "cat_name": "Syrianews" 
}] 
+0

你如何做到訪問JSON文件?給我看看。 – hekomobile 2012-07-18 17:01:50

回答

0

看來您正在嘗試執行跨域Ajax請求,這是不允許的。 Ajax請求具有相同域,相同端口,相同協議的安全要求。如果您從說http://www.tinyfactory.co/加載您的應用程序,然後嘗試向http://api.example.com/發出Ajax請求,則安全沙箱將不允許它。

但有希望。輸入JSONP。 JSONP或填充JSON(http://en.wikipedia.org/wiki/JSONP)是一種繞過此安全策略的方法,如果您請求數據的域播放良好。通常,您會在名爲「callback」的API上看到一個參數。它所做的是將數據包裝在您聲明的Javascript函數中。例如:

http://api.example.com/datafeed.json?callback=foo 

將返回數據

foo({fName: 'Alex', lName: 'Rolek'}); 

JSONP能夠通過動態地插入腳本代碼到DOM設置爲您正在使用請求API的「SRC」屬性來實現這一目標回調請求var。當API返回響應時,函數'foo'在您的應用程序中被調用,您可以開始使用響應數據。

在煎茶觸摸,變化:

proxy: 'ajax' 

proxy: 'jsonp' 

根據您的要求。只要API接受回調,Sencha Touch就會完成其餘的繁重工作。

有關更多信息,請查看:

http://docs.sencha.com/touch/2-0/#!/api/Ext.data.proxy.JsonP

希望這有助於。

0

Can Sencha可以讀取這種非根響應嗎?

[{ 「ID」: 「7253」, 「標題」: 「你好」, 「說明」: 「」, 「源」: 「syrianews」, 「cat_name」: 「Syrianews」 },{ 「ID」: 「7208」, 「標題」: 「你好」, 「說明」: 「」, 「源」: 「syrianews」, 「cat_name」: 「syrianews」 }]