2013-07-23 2 views
3

Говорят, что у меня есть поля здесь для пользователя в формате «JSon»:Как читается json-файл? ExtJS

{ 
    "users": [ 
     { 
      "id": 1, 
      "name": "Ed Spencer", 
      "email": "[email protected]" 
     }, 
     { 
      "id": 2, 
      "name": "Abe Elias", 
      "email": "[email protected]" 
     } 
    ] 
} 

Я полагаю, что корень здесь «пользователи». Могу ли я сохранить этот текст как файл users.json?

И оттуда, как я читал из этого файла (в данном случае, с ext.js)

Ext.define('AM.model.User', { 
    extend: 'Ext.data.Model', 
    fields: ['name', 'email'] 
}); 

var store = Ext.create('Ext.data.Store', { 
    model: 'User', 
    proxy: { 
     type: 'ajax', 
     url : 'users.json', 
     reader: { 
      type: 'json', 
      root: 'users' 
     } 
    } 
}); 

Что такое URL? Это абсолютный путь? Будет ли это работать? Помогите!

ответ

3

На странице HTML файл JavaScript поддерживается по отношению к URL-адресу страницы HTML или по абсолютному пути.

Сохраните этот текст в виде файла users.json?

Вы можете, конечно.

Каков адрес?

URL-адрес users.json является относительно URL страницы HTML, на котором выполняется приложение, так что если страница HTML был http://localhost/myapp/index.html, относительный путь users.json будет такой же, как абсолютный путь http://localhost/myapp/users.json

Это абсолютный путь?

No, users.json - это относительный путь. Вы можете использовать, если хотите, использовать абсолютный путь.

Я бы сделал папку data в вашей папке app и использовал app/data/users.json в качестве URL-адреса.

Вы также должны изучить Chrome Developer Tools, чтобы вы могли видеть сетевые запросы.

+0

Я сделал именно это, но я продолжаю получать сообщение об ошибке «NS_ERROR_DOM_BAD_URI: доступ к ограниченному URI» и я не уверен, почему? –

+0

Вы работаете на сервере или через файловую систему? что говорит вам вкладка сети инструментов разработчика Chrome? –

+0

Только в файловой системе, и я в настоящее время не могу использовать хром в своем офисе –

1
{ 
    "users": [ 
     { 
      "id": 1, 
      "name": "Ed Spencer", 
      "email": "[email protected]" 
     }, 
     { 
      "id": 2, 
      "name": "Abe Elias", 
      "email": "[email protected]" 
     } 
    ] 
} 

в поле вашей модели, нет идентификатора, который исходит от JSON, есть только имя и адрес электронного поле ...

Ext.define('AM.model.User', { 
    extend: 'Ext.data.Model', 
    fields: ['name', 'email'] 
}); 

добавить поле идентификатора модель, как это

Ext.define('AM.model.User', { 
    extend: 'Ext.data.Model', 
    fields: ['id', 'name', 'email'] 
}); 
Смежные вопросы