我正在使用Appcelerator的Titanium編寫iPhone應用程序。該應用程序的一個要求是能夠檢索最近播放的歌曲的JSON數組,並將其顯示在tableView中。使用Appcelerator/titanium JSON數組返回空
我在應用程序中有一個單獨的標籤,可以解析來自twitter的JSON沒有問題,但無論我做什麼,我都無法讓appcelerator來解析我生成的json。 JSON是由位於我的服務器上的PHP文件使用json_encode()生成的;
這是我的JSON:
[
{
"title": "Cramp Pres. Sliders - Meteor"
},
{
"title": "Progressiver pres. FineSky - Fine Sky"
},
{
"title": "Armin Van Buuren #x26; DJ Shah feat. Chris Jones - Going Wrong (Alex M.O.R.P.H #x26; Woody Van Eyden Remix)"
},
{
"title": "Bart Claessen - Hartseer"
},
{
"title": "Will Holland feat. Jeza - Start Again (Juventa Remix)"
}
]
我與許多JSON驗證器只是可以肯定的檢查這一點,這確實是有效的。
這是我的JS:
var loader = Ti.Network.createHTTPClient();
loader.setTimeout(10000);
loader.open("GET","http://myurl.com/service/played.json");
loader.onload = function()
{
// Ti.API.info writes information to the debug console.
Titanium.API.info('Loaded! Status: ' + this.status);
Titanium.API.info('Response Header: ' + this.getResponseHeader('Content-Type'));
Titanium.API.info('Response Text: ' + this.responseText);
}
loader.send();
在應用雖然,responseText的僅僅是回來爲[] - 這就是它。沒有其他的。我檢查了我的JSON結構和twitter API返回的JSON結構,並且兩者看起來都差不多,只有twitter API纔會回來,並且可以想象得到更多信息。
下面是我曾嘗試以下步驟:
我救了PHP產生JSON到一個名爲「test.json」的文本文件,並試圖解析它。這工作得很好!
以前我寫的web服務需要一個?action =播放的查詢字符串。我刪除了這一點,以確保我確實正在檢索一個JSON數組。這並沒有區別
我已經發送了頭在PHP中的文本/純和應用/ JSON無濟於事
最後,我已經使用了mod_rewrite我的服務器上,以便我可以用於從Web服務的輸出作爲json文件..也就是說played.json - 仍然是一個空陣列。
我只是覺得我反覆敲打我的頭撞牆,並希望從一些不太強調人的一些見解:)
任何幫助將不勝感激!
親切的問候,
戴夫
更多信息: 我已經通過檢查HTTP頭返回的內容長度始終是2。然而,在查看網頁在瀏覽器中發現的,或生成的.json文件顯示完整的JSON數組。
正如之前所懷疑的,這似乎正在成爲一個PHP相關的問題。腳本的工作方式很簡單。它查詢MySQL表以檢索歌曲列表。雖然它的循環遍歷數組它填充的陣列名爲$歌曲
在函數結束時,我簡單地使用:
echo json_encode($songs);
甚至更多信息 如果我刪除的內容類型頭和在瀏覽器中查看頁面,我收到JSON數組..如果我複製並粘貼到我的PHP文件的末尾,在結束標記後顯示粘貼的數據。
嗨布賴恩,感謝您的答案。 - 這是我以前嘗試的另一個步驟,我忽略了提及,但它仍然不能解決問題。 :( – Dave 2011-05-31 16:47:01