Давайте так. В вашем примере описан словарь. Доступ к элементам по ключу (не по индексу!). media['size'] вернёт 200, например. media['users'] - это список. Доступ к элементам по индексу, начиная с 0 (не по ключу!). Элемент media['users'][0] - это опять словарь, доступ к элементам по ключу. media['users'][0]['name'] вернёт myname, например.
Если вам интерпретатор показывает ошибку "list indices must be integers or slices, not str", значит вы обращаетесь к списку неверным образом. Возможно, вместо строго целого числа вы пытаетесь запросить строку. media['users']['0']['name'] вернёт такую ошибку, тогда как media['users'][0]['name'] покажет имя.
Квадратные скобочки - список (не ассоциативный массив, доступ к элементам по индексу)
Фигурные скобочки - словарь (ассоциативный массив, доступ к элементам по ключу)
Любой из этих типов - итерируемый, каждый из них можно перебрать в цикле. Правда, есть одно отличие: в стандартном цикле список будет выдавать элемент, а словарь - ключ.
Да как обычно! Эта задача решается "в лоб". Он выписал все возможные варианты, типа "1 программист, 2 программиста, 11 программистов, 21 программист, 32 программиста, 101 программист, 102 программиста, 111 программистов, 112 программистов, 121 программист", посмотрел, что дальше будет "212 программистов, 221 программист" и вывел "формулу".
У вас есть функция showServerResponse, там принимается ответ от серевера в переменную txt. Её нужно разобрать, online = JSON.parse(txt); Теперь все сообщения придётся слать json'ом, не забудьте. И нужно проверить if(online.user_amount !== 'undefined') { // если сервер послал не сообщение от другого пользователя, а выдал изменение количества пользователей, ...}
Да, примерно так. Не забудьте, что принятые данные - это "строка", её нужно перевести в JSON Object с помощью конструкции answer = JSON.parse(ваша строка с json); И не совсем так - $('#users_amount').text(online); - если переменная online это json, то это... как обьект. Если вы шлёте данные вида {"users_amount": 10}, то чтобы получить число 10, надо сделать online = JSON.parse('{"users_amount": 10}'); и $('#users_amount').text(online.users_amount);
М... Возможно, вы не обновили скрипты на сервере) Но ведь не обязательно слать данные каждый раз? Можно отсылать что-то типа {"system": "Тел в чате: 666"} только при изменении людей онлайн, а сообщение в чат слать {"chat": "сообщение"} и проверять состояние как-нибудь типа if(answer.system !== 'undefined') ... else if(answer.chat !== 'undefined') ...
CanVeeD , да, тогда лучше всего действительно использовать json. В JS-скрипте вам нужно принять данные от сервера и сделать JSON.parse полученной строки. Вообще, наверное, лучше было изначально с json работать, удобно же до ужаса. А тут с чем проблема?
CanVeeD , в вы питоньем скрипте читаете сообщение из вебсокета. Вы можете отправлять туда же сообщение. Сможете прочитать сообщение в JS-скрипте на клиенте?
Да, пожалуй, вопрос не понял именно я. Насколько я знаю, через вебсокеты клиент соединяется с сервером изолированным потоком данных, вы можете из него читать (иначе бы не смогли получить сообщение от клиента) и в него же писать. Э... И?
Если вам интерпретатор показывает ошибку "list indices must be integers or slices, not str", значит вы обращаетесь к списку неверным образом. Возможно, вместо строго целого числа вы пытаетесь запросить строку. media['users']['0']['name'] вернёт такую ошибку, тогда как media['users'][0]['name'] покажет имя.
Квадратные скобочки - список (не ассоциативный массив, доступ к элементам по индексу)
Фигурные скобочки - словарь (ассоциативный массив, доступ к элементам по ключу)
Любой из этих типов - итерируемый, каждый из них можно перебрать в цикле. Правда, есть одно отличие: в стандартном цикле список будет выдавать элемент, а словарь - ключ.