Ошибка синтаксического анализа прокси-сервера JSON-считывателя тегов скрипта Sencha Touch

#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);
}

?>