Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Всем добрый день
Пытаюсь тривиальными путями решить следующую задачу
У меня есть страница , на ней выведена таблица и форма ввода с кнопкой "отправить", все отлично работает, но я пытаюсь использовать AJAX для динамического обновления контента на странице, заклеенного в блок.
Вот сам блок
div id="from_ajax" class="col-md-7 col-md-offset-1">
@if ($Chats->count())
<table class="table table-striped table-hover table-bordered table-condensed table-hover">
<thead>
<tr class="success">
<th >Время</th>
<th >Позывной</th>
<th >Сообщения</th>
</tr>
</thead>
<tbody>
@foreach ($Chats as $Chat)
<tr >
<td ><span class="label label-warning">{{{ date(" d.m",$Chat ->time)}}}</span>{{{date(" H:i:s",$Chat ->time) }}}</td>
<td >{{{ $Chat->ch }}} - {{{ $Chat->poz }}}</td>
<td>
@if ($Chat->private)
{{ ($Chat->message) }} <span class="label label-danger">Приват</span>
@else
{{ ($Chat->message)}}
@endif
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
{{ $Chats->links() }}
{{ Form::open(array('action' => 'ChatsController@store')) }}
{{ Form::text('MSG', Input::old('MSG')) }}
{{ Form::submit('Отправить') }}
{{ Form::token() . Form::close() }}
Как правильно написать функцию обновления определенного блока в данном случае?
Был тут http://codething.ru/ajax.php но в моем случае не сработало
Уверен решение просто, помогите пожалуйста
Не в сети
Не в сети
Спасибо за быстрый ответ
Хотелось бы обновить содержимое блока "div id="from_ajax"" средствами JavaScript
в следуюзий раз тему буду в правильны раздел писать!)
Не в сети
Не в сети
у меня конкретно не получается div обновить
поправьте меня если я не прав
Для того чтобы можно было динамически обновить страницу, необходимо выполнить ajax запрос , в моем случае к конртеному контроллеру
и в случае успеха подгрузить необходимые данные в выбранный элемент
если я пропишу
setTimeout(function(){
('#from_ajax').load('URL::action("ChatsController@index")');
}, 1000);
то страница не обновить конкретную форму т.к. не знает какие конкретно данные необходимо передать в запрос.
А как правильно в случае с Laravel составить ajax запрос?
Контроллер отвечающий за формирование страницы ChatsController@index, контроллер отвечающий за заполнение формы ввода ChatsController@store
Изменено CBETOBuT (22.11.2013 17:03:11)
Не в сети
Во-первых, я надеюсь что вместо «гибрида» JavaScript-PHP у вас всё же что-то такое:
('#from_ajax').load('<?php echo URL::action("ChatsController@index")?>');
Или через {{ URL... }} для Blade.
Во-вторых — верно, если это данные формы, то нужно использовать
js$.ajax()
с POST. По вашей ссылке этот метод описан как «Пример 3». Ничего сложного.
Не в сети
спасибо за разяснение
но всеравно у меня не получаеться
верно ли я понимаю суть работы контроллеров laravel 4
я создал ChatsController@index котороый мне выводит страницу /chats
public function index()
{
$Chats = $this->Chat->orderBy('time', 'desc')->paginate(18);
Profiler::disable();
return View::make('Chats.index', compact('Chats'));
}
далее метод store отвечающий за сбор данных из формы
public function store()
{
$MSG = Input::get('MSG');
$user = Auth::user()->username;
if(Input::has('MSG'))
{
$this->Chat->insert(array(
'ch' => 0,
'poz'=> 0,
'time'=> time(),
'message'=> " <От: $user> "." ".$MSG,
'private'=> 0
));
}
return Redirect::route('info.chats.index');
}
я просто не понимаю что мне загружать ajax запросом ( в парметр sucsees что нужно вставить?)?
могли бы пример с laravel 4 показать ?
у меня задача реализовать чат
Не в сети
<div id="from_ajax" class="col-md-7 col-md-offset-1">
{{View::make('view111', compact($Chats))->render()}}
</div>
создай представление view111 и положи туда всё что находилось в div id="from_ajax"
и {{ $Chats->links() }} туда же
в function store возвращаем представление view111 с данными как в function index
Не в сети
А более корректно будет так.
Я к примеру использую blade шаблон
И соотвественно создал фаил ajaxform.blade.php в views/Chats
@foreach ($Chats as $Chat)
<tr>
<td><span class="label label-warning">{{{ date(" d.m",$Chat ->time)}}}</span>{{{date(" H:i:s",$Chat ->time) }}}</td>
<td>{{{ $Chat->ch }}} - {{{ $Chat->poz }}}</td>
<td>
@if ($Chat->private)
{{ ($Chat->message) }} <span class="label label-danger">Приват</span>
@else
{{ ($Chat->message)}}
@endif
</td>
</tr>
@endforeach
Далее в index.blade.php я с помошью шаблона blade вывел действия своего кода, предварительно создав ajax запрос
@section('scripts')
<script type="text/javascript" src="jquery.js"></script>
<script>
function show() {
var url = $(this).attr('action');
$.ajax({
url:url,
dataType:'html',
data: {ajax:true},
type:'GET',
success:function(html){
$('#from_ajax').html(html);
}
});
}
setInterval(show , 5000)
</script>
@stop
а в самом шаблоне вывел с помощью @include
@include('Chats.ajaxform', array('Chats'=>$Chats))
Не в сети
Страницы 1