Вывод массива json
Вывод массива json
Как с помощью jquery вывести массив в блок, который мне нужно.
Пробовал вот так:
$('#block').append(data.author+', '+data.message);
Но не прокатило=)
Вот как выглядит массив полученых значений Т.е. тут как бы массив, и как его весь вывести?
Пробовал вот так:
$('#block').append(data.author+', '+data.message);
Но не прокатило=)
Вот как выглядит массив полученых значений Т.е. тут как бы массив, и как его весь вывести?
Re: Вывод массива json
Мне приходит массив из вот таких объектов.
{"id_message":"72","author_message":"anonym","text_message":"dddddd"}
Мне нужно что бы они выводились в блок <div id="chat">
То есть если просто обратится из функции $.post - data.model.author_message он ничего не находит.
{"id_message":"72","author_message":"anonym","text_message":"dddddd"}
Мне нужно что бы они выводились в блок <div id="chat">
То есть если просто обратится из функции $.post - data.model.author_message он ничего не находит.
Re: Вывод массива json
data.model[0].author_messagesystemiv писал(а):Мне приходит массив из вот таких объектов.
{"id_message":"72","author_message":"anonym","text_message":"dddddd"}
Мне нужно что бы они выводились в блок <div id="chat">
То есть если просто обратится из функции $.post - data.model.author_message он ничего не находит.
Re: Вывод массива json
По идеи да, но я ещё туплю с алгоритмом
Код: Выделить всё
function last(){
if(!process){
process = true;
$.post('chat/lastMessage', {
id_message: lastmessage
}, function(data){
if(lastmessage != data.last.id_message){
var count = data.model.length;
lastmessage = data.last.id_message;
for(var i = 0; i <= count; i++){
$('#chat').append('<li>' + data.model[i].author_message + '</li>');
}
}
}, 'json');
$('.left-content').scrollTop($('.left-content').get(0).scrollHeight);
process = false;
}
}
- timlar
- Сообщения: 1382
- Зарегистрирован: 2009.09.19, 17:49
- Откуда: Украина, Днепропетровск
- Контактная информация:
Re: Вывод массива json
Как-то так:
Код: Выделить всё
data = [
{"id_message":"72","author_message":"anonym","text_message":"cvbncvbncv"},
{"id_message":"73","author_message":"anonym","text_message":"dfghdfgh"},
{"id_message":"74","author_message":"anonym","text_message":"rtyurtyurtrr"}
];
for (var i in data) {
var id = data[i].id_message,
author = data[i].author_message,
text = data[i].text_message,
block = $('<div>');
console.log('%d | %s: %s', id, author, text);
$('#chat').append( block.html(author + ': ' + text) );
}
Последний раз редактировалось timlar 2011.07.07, 22:22, всего редактировалось 1 раз.
Twitter: @timlar_ua
-
- Сообщения: 1428
- Зарегистрирован: 2009.08.20, 22:54
- Откуда: Молдова, Бельцы
- Контактная информация:
Re: Вывод массива json
jquery tmpl вам в помощь.
- timlar
- Сообщения: 1382
- Зарегистрирован: 2009.09.19, 17:49
- Откуда: Украина, Днепропетровск
- Контактная информация:
Re: Вывод массива json
Если человек испытывает трудности с такими мелочами, то думаю, ему пока рано советовать jQuery tmplEkstazi писал(а):jquery tmpl вам в помощь.
Twitter: @timlar_ua
Re: Вывод массива json
Я вобще удивлен, что у него при таких вопросах Ubuntu стоит, на вид 8-9 версия
Re: Вывод массива json
Troy,11.04. по внешности не судят)
и если ты пишешь что бы постибаться, а не помочь, иди в курилку пиши или выскажи все претензии в личку
и если ты пишешь что бы постибаться, а не помочь, иди в курилку пиши или выскажи все претензии в личку
Re: Вывод массива json
Алгорит примерно такой:
В яваскрипте в автозагрузку помещаем что при нажатии кнопки, методом POST данные будут отправляться в php, тот в свою очередь из заносит в БД.
С нажатием кнопки, и передачи запроса, выполняется метод last()
Глобально объявляем переменную var process = false; которая показывает, что идёт процесс загрузки.
Ещё глобально объявлена переменная lastmessage, в которой будет храниться последнее сообщение.
В методе last мы проверяем, идёт ли процес загрузки или нет.
Потом мы проверяем, если объявленная переменная у нас меньше чем число сообщений, которое отдал php, то выводим в конец блока информацию полученную в формате json.
По идеи всё верно. Вот код.
Скрипт:
И контроллер:
В яваскрипте в автозагрузку помещаем что при нажатии кнопки, методом POST данные будут отправляться в php, тот в свою очередь из заносит в БД.
С нажатием кнопки, и передачи запроса, выполняется метод last()
Глобально объявляем переменную var process = false; которая показывает, что идёт процесс загрузки.
Ещё глобально объявлена переменная lastmessage, в которой будет храниться последнее сообщение.
В методе last мы проверяем, идёт ли процес загрузки или нет.
Потом мы проверяем, если объявленная переменная у нас меньше чем число сообщений, которое отдал php, то выводим в конец блока информацию полученную в формате json.
По идеи всё верно. Вот код.
Скрипт:
Код: Выделить всё
<script type="text/javascript">
$(document).ready(function(){
$('#text-message').focus();
setInterval("last()", 2000);
$('.left-content').scrollTop($('.left-content').get(0).scrollHeight);
$('#message-form').submit(function(){
$.post('chat/addMessage', {
text_message: $('#text-message').val()
}, last());
$('#text-message').focus();
$('#text-message').val('');
$('.left-content').scrollTop($('.left-content').get(0).scrollHeight);
return false;
});
});
var process = false;
var lastmessage;
function last(){
if(!process){
process = true;
$.post('chat/lastMessage', {
id_message: lastmessage
}, function(data){
if(lastmessage < data.last.id_message){
var count = data.model.length;
lastmessage = data.last.id_message;
for(var i = 0; i <= count; i++){
$('#chat').append('<li>' + data.model[i].text_message + '</li>');
$('.left-content').scrollTop($('.left-content').get(0).scrollHeight);
}
}
}, 'json');
process = false;
}
}
</script>
Код: Выделить всё
<?php
class ChatController extends CController{
public function actionIndex(){
$criteria = new CDbCriteria(array(
'order' => 'id_message DESC',
'limit' => '50',
));
$model = Chat::model()->findAll($criteria);
$model = array_reverse($model);
$this->render('index', array(
'model' => $model,
));
}
public function actionAddMessage(){
$model = new Chat;
$model->text_message = $_POST['text_message'];
$model->save();
}
public function actionLastMessage(){
$criteria = new CDbCriteria(array(
'condition' => 'id_message > :id_message',
'order' => 'id_message DESC',
'params' => array(':id_message' => $_POST['id_message']),
));
$model = Chat::model()->findAll($criteria);
$model = array_reverse($model);
$last = end($model);
echo CJSON::encode(array(
'model' => $model,
'last' => $last,
));
}
}