AJAX insert по клику

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
zhuk99
Сообщения: 20
Зарегистрирован: 2012.03.25, 15:00

AJAX insert по клику

Сообщение zhuk99 »

Добрый день всем!

Хочу по клику на элемент страницы сделать добавление записи в базу. примеров в инете море делаю по такому :

Код: Выделить всё

$('#idcat').change(function(){
$.ajax({
type: "POST",
url: "show.php",
data: "idcat="+$("#idcat").val(),
success: function(html){
$("#content").html(html);
}
});
return false;
}); 
а в файле-обработчике следующее:

Код: Выделить всё

<?php
$raiting= new Raiting();
$raiting->id=$_POST['idcat'];
$raiting->save();
?>
Данный код на вставленный на главную страницу работает и все добавляет, а вот при размещении его в других местах, либо не получает доступа, либо не видит модель, либо ссылается на ошибки.... Как правильно это сделать?
wolandino
Сообщения: 103
Зарегистрирован: 2011.02.02, 20:03

Re: AJAX insert по клику

Сообщение wolandino »

Код: Выделить всё

Данный код на вставленный на главную страницу работает и все добавляет
Это куда?

Код: Выделить всё

вот при размещении его в других местах
Это в каких?
Аватара пользователя
Koduc
Сообщения: 140
Зарегистрирован: 2011.02.15, 18:56

Re: AJAX insert по клику

Сообщение Koduc »

Не видит модель? внесите в конфиг импорт нужной модели.
Ссылается на ошибки - так скорее всего обращается к файлу show.php которого в нужном месте нет;)
вместо show.php надо писать полный урл через <?php echo $this->createUrl(...); ?>
Разработка на Yii: monoray.ru
Открытое бесплатное решение для создания сайтов по аренде/продаже недвижимости: Open Real Estate
zhuk99
Сообщения: 20
Зарегистрирован: 2012.03.25, 15:00

Re: AJAX insert по клику

Сообщение zhuk99 »

напишу более детально:

в файле /ajaxfiles/chage_rate.php следующее

Код: Выделить всё

if (isset($_POST["post_id"])) $post_id = $_POST["post_id"];
if (isset($_POST["user_id"])) $user_id = $_POST["user_id"];
if (isset($_POST["val"])) $val = $_POST["val"];

$rait = new RaitingPost;
$rait->user_id=$user_id;
$rait->post_id=$post_id;
$rait->time=date("Y-m-d H:i:s");
$rait->save();
в файле _view нужной мне модели Post :

Код: Выделить всё

<span class="rat-minus"><img src="/images/rating-.png" onclick="post_rate_change(1,2,3,-1)"></span>
В /layouts/main.php :

Код: Выделить всё

function post_rate_change (user, post, cur_val, val)
     {
        //alert (user +" " + post +" "+ id+ " " + val);
        runajax(user, post, val, cur_val);
        
        
     };
     
     function runajax(user_id, post_id, val, cur_val)
    {
         //var data = $("#inp0").val();
         var data = "post_id="+post_id+"&user_id="+user_id+"&val="+val;
         alert (data);
         $.ajax({
              type: "GET",
              data: data,
              url: "/ajaxfiles/change_rate.php",
              dataType: "json",
              success: function(data)
              {
                alert ("ecgt[");
              }
            })
        
    }
пробовал и с GET и с POST.
при клике на элемент алерт из ранаякса не вызывается., но что еще более пугающее при переходе http://mydomen/ajaxfiles/change_rate.ph ... id=1&val=1
получаем

Fatal error: Class 'RaitingPost' not found in Z:\home\clim\www\ajaxfiles\change_rate.php on line 8
Последний раз редактировалось zhuk99 2012.04.28, 16:42, всего редактировалось 1 раз.
zhuk99
Сообщения: 20
Зарегистрирован: 2012.03.25, 15:00

Re: AJAX insert по клику

Сообщение zhuk99 »

Koduc писал(а):Не видит модель? внесите в конфиг импорт нужной модели.
Ссылается на ошибки - так скорее всего обращается к файлу show.php которого в нужном месте нет;)
вместо show.php надо писать полный урл через <?php echo $this->createUrl(...); ?>
$url=$this->createUrl($route,$params);
где $this относится к экземпляру контроллера; $route соответствует маршруту запроса, а $params является списком параметров GET для добавления к URL.
У меня вроде модели такой нет, которая бы работала с этим, просто файл который должен работать с объектом. Или я что-то не понимаю?

в импорте :

Код: Выделить всё

'import'=>array(
        'application.models.*',
        'application.components.*',
    ), 
значит моя модель RaitingPost импортирована
zhuk99
Сообщения: 20
Зарегистрирован: 2012.03.25, 15:00

Re: AJAX insert по клику

Сообщение zhuk99 »

все сделал как описано вот тут: http://jquery.page2page.ru/index.php5/A ... %D0%BC_GET

Получаю Class 'RaitingPost' not found in Z:\home\clim\www\ajaxfiles\change_rate.php on line 8

Как загрузить эту модель в данном скрипте?
wolandino
Сообщения: 103
Зарегистрирован: 2011.02.02, 20:03

Re: AJAX insert по клику

Сообщение wolandino »

http://yiiframework.ru/doc/cookbook/ru/js.ajax
Посмотрите, мне кажется так сделать проще.
А в вашем примере, если вы делаете таким образом, почему просто не применить там обычный нативный SQL, без модели. Тупо insert into..
wolandino
Сообщения: 103
Зарегистрирован: 2011.02.02, 20:03

Re: AJAX insert по клику

Сообщение wolandino »

Вот по поводу импорта модели http://www.yiiframework.com/forum/index ... entry55265
sergasd
Сообщения: 45
Зарегистрирован: 2011.02.17, 20:24

Re: AJAX insert по клику

Сообщение sergasd »

zhuk99, у вас обращение к скрипту /ajaxfiles/chage_rate.php идет не через index.php , соответственно yii не запускается и ваш

Код: Выделить всё

'import'=>array(
        'application.models.*',
        'application.components.*',
    ),
Работать не будет.
Вам нужно либо вручную через require свою модель подгрузить, либо воспользоваться механизмами yii - посылать ajax запрос на какой-нибудь экшен.
Ответить