Я сейчас пишу приложение для iPhone, используя Appcelerator's Titanium.Одно из требований приложения заключается в том, чтобы иметь возможность извлекать массив JSON недавно воспроизведенных песен и отображать его в виде таблицы.
У меня есть отдельная вкладка в приложении, которая без проблем анализирует JSON из TwitterОднако, независимо от того, что я делаю, я не могу заставить 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 и JSON, которые возвращает API Twitter, и оба они выглядят примерно одинаково, только API Twitter возвращается с гораздо большей информацией, как вы можете себе представить.
Вот шаги, которые я попробовал:
Я сохранил сгенерированный PHP JSON в текстовый файл с именем «test.json» и попытался его проанализировать. Это сработало нормально!
Ранее веб-сервис, который я писал, требовал строку запроса? Action = Play.Я удалил это, чтобы убедиться, что я определенно получаю массив JSON.Это не имеет значения
Я отправил заголовки в PHP для текста / обычного И приложения / JSON безрезультатно
Наконец, я нанялmod_rewrite на моем сервере, чтобы я мог обрабатывать выходные данные веб-службы в виде файла json. Т.е. plays.json - все равно пустой массив.
Я просто чувствую, что я 'Я постоянно бьюсь головой о кирпичную стену и буду признателен за понимание некоторых людей с меньшим стрессом:)
Любая помощь будет с благодарностью!
С уважением,
Дейв
Дополнительная информация: Из проверки заголовков http я обнаружил, что возвращаемая длина содержимого всегда равна 2. Однако, просматривая страницу в браузере или сгенерированный файл .json, показывает полный массив JSON.
Как и предполагалось ранее, это, похоже, сводится к проблеме, связанной с PHP.Сценарий работает очень просто.Он запрашивает таблицу MySQL, чтобы получить список песен.Зацикливаясь в массиве, он заполняет массив, который называется $ songs
. В конце функции я просто использую:
echo json_encode($songs);
Еще больше информации Если яудалите заголовок типа содержимого и просмотрите страницу в браузере, я получу массив JSON. Если я затем скопирую его и вставлю в конец моего файла PHP, после закрывающего тега отобразятся данные, которые я вставляю.