AJAX в Yii
- chungachguk
- Сообщения: 435
- Зарегистрирован: 2012.07.17, 11:52
Re: AJAX в Yii
Спасибо. Нашел в чем косяк был. Испорчены системные файлы были.
Re: AJAX в Yii
Не хватает примера для обычной ссылки по щелчку на которой выдается кусок html.
+ если есть плагины для AJAX не мешало бы их тут привести
+ если есть плагины для AJAX не мешало бы их тут привести
Re: AJAX в Yii
а как быть если данные должны придти не в , а в
не нашел или не понял в доках
Код: Выделить всё
echo CHtml::textArea('output', $output);
Код: Выделить всё
echo CHtml::textField('output', $output);
Re: AJAX в Yii
какая разница?
Re: AJAX в Yii
думаю что использовать textField правильнее в моем случае
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: AJAX в Yii
textField генерит input, в него тем же методом значение не записать. Нужно писать в его свойство value.
Нравится Yii? Давайте сделаем его лучше!.
Re: AJAX в Yii
Подскажите такую вещь, есть параметр 'update' => '#output', в поле с id = #output вставляются данные которые передает функция. Собственно вопрос: можно ли как то обновить несколько полей сразу (нужно вставить разные данные), либо при нажатии на кнопку отправить несколько запросов.
Для болей наглядности опишу что я делаю, есть корзина интернет магазина, необходимо что бы при изменение количества, менялась стоимость данной позиции и общая сумма, общее количество.
Для болей наглядности опишу что я делаю, есть корзина интернет магазина, необходимо что бы при изменение количества, менялась стоимость данной позиции и общая сумма, общее количество.
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: AJAX в Yii
Тут придётся написать JavaScript самостоятельно.
Нравится Yii? Давайте сделаем его лучше!.
Re: AJAX в Yii
Повторил Ваш пример с формой.
Пытался задать для клавиши в HtmlOptions id для тега клавиши:
echo CHtml::ajaxSubmitButton('Обработать', '', array(
'type' => 'POST',
//Задаем параметр 'id' для тега
'id' => 'MyButton',
// Результат запроса записываем в элемент, найденный
// по CSS-селектору #output.
'update' => '#output',
),
Но система меняет id:
<input id="yt0" type="submit" value="Обработать" name="yt0">
Для таких кнопок система сама ведет именование.
Но если попытаться также задать атрибут 'class' то он просто не формируется.
Клавишу надо как-то в отдельный <div> оборачивать?
Нельзя ли было бы на сайте какой-то справочник по нестандартным применениям htmlOptions завести?
В описании классов некоторые описаны, но не все.
Пытался задать для клавиши в HtmlOptions id для тега клавиши:
echo CHtml::ajaxSubmitButton('Обработать', '', array(
'type' => 'POST',
//Задаем параметр 'id' для тега
'id' => 'MyButton',
// Результат запроса записываем в элемент, найденный
// по CSS-селектору #output.
'update' => '#output',
),
Но система меняет id:
<input id="yt0" type="submit" value="Обработать" name="yt0">
Для таких кнопок система сама ведет именование.
Но если попытаться также задать атрибут 'class' то он просто не формируется.
Клавишу надо как-то в отдельный <div> оборачивать?
Нельзя ли было бы на сайте какой-то справочник по нестандартным применениям htmlOptions завести?
В описании классов некоторые описаны, но не все.
-
- Сообщения: 1
- Зарегистрирован: 2013.04.18, 22:16
Re: AJAX в Yii
Доброго времени суток всем,
Вот тоже интересует использование ajax, со стандартным примером разобрался, тут ничего сложного, но он ограничивается только тем что подменяет содержимое тега.
Допустим у меня форма в попапе, после успешной отправки хочу заменить контент формы, нотисом об успехе.
контроллер может возвратить мне массив с
либо в случае ошибок, например,
вижу решение, как и всегда делать это через скрипт jquery,
но как мне получить в js выходной массив данных чтобы я смог его обработать
Вот тоже интересует использование ajax, со стандартным примером разобрался, тут ничего сложного, но он ограничивается только тем что подменяет содержимое тега.
Допустим у меня форма в попапе, после успешной отправки хочу заменить контент формы, нотисом об успехе.
контроллер может возвратить мне массив с
Код: Выделить всё
array('success' => true);
Код: Выделить всё
array('error' = array('wrong_email' => true, 'no_name' => true ));
но как мне получить в js выходной массив данных чтобы я смог его обработать
Re: AJAX в Yii
Добрый день. Возник следующий вопрос - как с помощью этого рецепта можно обновлять таблицу без перезагрузки все страницы?
Идея следующая - есть определенный список в таблице (строки из базы данных). И в каждой строке есть кнопка "Удалить". Вот хотелось бы, чтобы сама таблица обновлялась после удаления без перезагрузки страницы.
имею такой код:
Контроллер
Вид
и собственно сам _test
Так вот - при нажатии кнопки информация без перезагрузки меняется, но получается сайт в сайте. Сам блок с id="output", внутри которого и должна обновляться инфа, заполняется копией сайта (будто iframe вставили в этот блок с ссылкой на эту же страницу). Подскажите, где у меня ошибка? Премного благодарен))
Я начинающий программист, и Yii недавно только начал изучать, потому за кривой код просьба сильно не пинать
Идея следующая - есть определенный список в таблице (строки из базы данных). И в каждой строке есть кнопка "Удалить". Вот хотелось бы, чтобы сама таблица обновлялась после удаления без перезагрузки страницы.
имею такой код:
Контроллер
Код: Выделить всё
class PostController extends Controller
{
public function actionHistory()
{
$name = Yii::app()->user->name;
if(isset($_POST['deleteTurn']))
{
$idTurn = Turn::model()->findByAttributes(array('md5' => $_POST['turnId']));
Turn::model()->deleteByPk($idTurn['id']);
$turnList = Turn::model()->findAllByAttributes(array('owner' => $name));
// если запрос асинхронный, то нам нужно отдать только данные
if(Yii::app()->request->isAjaxRequest)
{
$this->render('_test', array(
'turnList'=>$turnList,
));
// Завершаем приложение
Yii::app()->end();
}
}
$turnList = Turn::model()->findAllByAttributes(array('owner' => $name));
$this->render('history', array(
'turnList'=>$turnList,
));
}
}
Код: Выделить всё
<div class="row">
<div class="col col-lg-12" id="output">
<?php echo $this->renderPartial('_test', array('turnList' => $turnList)); ?>
</div>
</div>
Код: Выделить всё
<table class="table table-hover">
<thead>
<tr>
<th>#</th>
<th class="text-center">Аккаунт</th>
<th class="text-center">Время</th>
<th class="text-center">Удалить</th>
</tr>
</thead>
<tbody>
<?php
$i = 0;
foreach($turnList as $turn)
{
$i++;
?>
<tr>
<td><?=$i;?></td>
<td><?=$turn->account;?></td>
<td class="text-center"><?=$turn->random;?></td>
<td class="text-center">
<form method="post">
<input type="hidden" name="turnId" value="<?=$turn->md5;?>">
<?php
echo CHtml::ajaxSubmitButton('Обработать', '', array(
'type' => 'POST',
// Результат запроса записываем в элемент, найденный
// по CSS-селектору #output.
'update' => '#output',
),
array(
// Меняем тип элемента на submit, чтобы у пользователей
// с отключенным JavaScript всё было хорошо.
'type' => 'submit',
'name' => 'deleteTurn'
));
?>
</form>
</td>
</tr>
<?php
}
?>
</tbody>
</table>
Я начинающий программист, и Yii недавно только начал изучать, потому за кривой код просьба сильно не пинать
Последний раз редактировалось OKyJIucT 2013.06.24, 15:05, всего редактировалось 2 раза.
Re: AJAX в Yii
Оказывается, все намного проще, чем я думал - надо было всего лишь подключить JQuery к сайту
Проблема частично решена - сайт теперь не выглядит как подгруженный через iframe, но подгрузка части контента через AJAX не работает.
В общем, методом проб и ошибок удалось добиться работы через AJAX, все дело в невнимательности))
Проблема частично решена - сайт теперь не выглядит как подгруженный через iframe, но подгрузка части контента через AJAX не работает.
В общем, методом проб и ошибок удалось добиться работы через AJAX, все дело в невнимательности))
Re: AJAX в Yii
Подскажите, вот мне нужно сделать сохранение модели через модальное окно.
вид
контроллер
проблема в том, что у меня происходит сохранение модели еще того, как я нажимаю кнопку submit.
пробовал вместо
делать
но проблема в том, что $_POST['ajax'] ПУСТОЙ, не пойму, почему.
пробовал разные варианты отправки через ajax, например свой костыль
и через json тоже пробовал передавать,
как бы все работает, но происходит сохранение до нажатия на submit, и $_POST['ajax'] пустой в любом случае.
Подскажите пожалуйста, как все таки сделать, чтобы и ajax валидация у клиента работала, но при этом сохранение происходило только при нажатии submit. Спасибо.
вид
Код: Выделить всё
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'createCatForm',
'action'=>'/administrator/createcat',
'enableClientValidation'=>true,
'enableAjaxValidation'=>true,
'clientOptions'=>array(
'validateOnSubmit'=>false,
),
)); ?>
//тут текстовые поля и тд.
<?php
echo CHtml::ajaxSubmitButton('Обработать', '/administrator/CreateCat', array(
'type' => 'POST',
'update' => '#output',
),
array(
'type' => 'submit'
));*/
?>
<?php $this->endWidget(); ?>
Код: Выделить всё
protected function performAjaxValidation($newCategory)
{
if(Yii::app()->request->isAjaxRequest)
{
$newCategory->save();
echo 'success';
Yii::app()->end();
}
}
public function actionCreateCat()
{
$newCategory=new Tree_admin;
$model=new changeForm;
if(isset($_POST['Tree_admin']))
{
$newCategory->attributes=$_POST['Tree_admin'];
$newCategory->alias=Yii::app()->translit->make($newCategory->title);
$newCategory->parent_id=$_POST['Tree_admin']['parent'];
$newCategory->level=$newCategory->parent_id+1;
if ($newCategory->validate())
{
$this->performAjaxValidation($newCategory);
}
//else {var_dump($newCategory->getErrors());}
}
$this->renderPartial('createCatForm', array(
'model'=>$newCategory,
'list'=>array('0'=>'root')+$newCategory->getTabList(),
),
false,true
);
}
пробовал вместо
Код: Выделить всё
if(Yii::app()->request->isAjaxRequest)
Код: Выделить всё
if(isset($_POST['ajax']) && $_POST['ajax']==='Tree_admin')
пробовал разные варианты отправки через ajax, например свой костыль
Код: Выделить всё
$('body').on('click', '.create', function(){
var formdata=$('#createCatForm').serializeArray();
$.ajax({
url: '/administrator/createcat',
dataType : "html",
data:formdata,
type: 'POST',
success: function (answer)
{
if (answer=='success')
{
removeModal();
$('#sideReload').empty();
$('#sideReload').load("/administrator #categories");
}
else
{
$('#modal').empty();
$('#modal').append(answer);
}
}
})
});
как бы все работает, но происходит сохранение до нажатия на submit, и $_POST['ajax'] пустой в любом случае.
Подскажите пожалуйста, как все таки сделать, чтобы и ajax валидация у клиента работала, но при этом сохранение происходило только при нажатии submit. Спасибо.
-
- Сообщения: 1268
- Зарегистрирован: 2013.07.17, 17:37
Re: AJAX в Yii
if ($newCategory->validate())
{
$this->performAjaxValidation($newCategory);
}
это бред, посмотрите как сделано в блоге
{
$this->performAjaxValidation($newCategory);
}
это бред, посмотрите как сделано в блоге
Re: AJAX в Yii
Подскажите как проверять ajax запросы, например в гриде нажимаю удаление
и хочу в контроллере посмотреть VarDumper::dump($model); die();
но этот код не срабатывает, как мне вывести на экран инфу?
и хочу в контроллере посмотреть VarDumper::dump($model); die();
но этот код не срабатывает, как мне вывести на экран инфу?
ភាសាខ្មែរ Yii2 - это кайф!
-
- Сообщения: 339
- Зарегистрирован: 2012.01.06, 22:07
Re: AJAX в Yii
Использовать Firebug.Akulenok писал(а):Подскажите как проверять ajax запросы, например в гриде нажимаю удаление
и хочу в контроллере посмотреть VarDumper::dump($model); die();
но этот код не срабатывает, как мне вывести на экран инфу?