#javascript #json #sencha-touch
#javascript #json #sencha-touch
Вопрос:
Я пытаюсь использовать прокси-сервер тегов скрипта Sencha Touch, чтобы я мог использовать файл JSON на удаленном веб-сайте, однако я вижу ошибки синтаксического анализа в консоли Safari, хотя я проверил правильность файла JSON.
Моя модель такова:
Ext.regModel('NoteNewsModel', {
idProperty: 'id',
fields: [
{ name: 'id', type: 'int' },
{ name: 'title', type: 'string' },
{ name: 'description', type: 'string' }
// { name: 'icon', type: 'string' }
]
});
Мой код хранилища таков:
Ext.regStore('NotesNewsStore', {
model: 'NoteNewsModel',
proxy: {
type: 'scripttag',
url: 'myjsonurl',
reader: new Ext.data.JsonReader ({
type: 'json',
root: 'entries'
})
},
autoLoad: true
});
Вот часть файла JSON на удаленном сервере:
{
"title":"json news",
"link":"https://myurl.com/json-news.html",
"description":"",
"language":"en",
"copyright":"my domain",
"ttl":"120",
"entries":[
{
"title":"SmarterMail Upgrade",
"link":"https://mydomain.com/122.html",
"date":"1316414335",
"guid":"https://mydomain.com/122.html",
"author":"flank plank",
"description":"test entry",
"introtext":"testing the intro text."
}
]
}
Наконец, ошибка, которую я вижу в консоли Safari, отображается под первой строкой
«заголовок»: новости json», data.json: 2SyntaxError: ошибка синтаксического анализа
Любая помощь по этому вопросу была бы признательна, я уже несколько часов ломаю голову над этим.
Спасибо, Аарон
Ответ №1:
Попробуйте изменить его на это:
reader: {
type: 'json',
root: 'entries'
}
Также не то, что в json нет «идентификатора».
Комментарии:
1. Спасибо за ответ, я изменил эту часть и теперь получаю это сообщение об ошибке: DataView требует определения конфигураций tpl, store и itemSelector
2. @llya139 Привет, спасибо за комментарий, я исправил эту ошибку, я пропустил { после чтения: однако я все еще получаю ошибку синтаксического анализа? Спасибо, Аарон
Ответ №2:
После долгих проб и ошибок я обнаружил, что это не работает из-за неправильного форматирования моего файла JSON.
Я последовал этому примеру: http://www.sencha.com/learn/legacy/Tutorial:Creating_JSON_Data_in_PHP
И с этим кодом на моем локальном сервере он теперь работает нормально.
<?php
$link = mysql_pconnect("server", "user", "password") or die("Could not connect");
mysql_select_db("database") or die("Could not select database");
$arr = array();
$rs = mysql_query("SELECT * FROM news");
while($obj = mysql_fetch_object($rs)) {
$arr[] = $obj;
}
$callback = $_REQUEST['callback'];
if ($callback) {
header('Content-Type: text/javascript');
echo $callback . '(' . json_encode($arr) . ');';
} else {
header('Content-Type: application/x-json');
echo json_encode($arr);
}
?>