melomaniac
(Melomaniac2012)
July 25, 2013, 5:50pm
1
Всем добрый вечер, домучал почти AjaxLink, но есть одна проблема, после отправки данных всплывает окно модальное. В этом собственно и проблема, если всплывает окно, данные не отправляются, если убрать окно, то все робит, но окно не выводится, замкнутый круг вообщем…
Вот собственно код ссылки:
<?php echo CHtml::ajaxLink(
"<i class='icon-shopping-cart'></i>",
Yii::app()->createUrl( '/product/addtocart' ),
array( 'type' => 'POST', 'data' => array( 'order_code' => $latest['id'], 'product_name' => $latest['title'], 'quantity' => 1), 'update'=>'#cart', "complete"=>'$("#cart").dialog("open")', 'cache'=>'false'),
array("data-toggle"=>'modal', 'href'=>'#cart', 'class' =>'btn btn-primary')
);
?>
Вот если так, то окно всплывает, но данные не отправляются.
А если убрать
"complete"=>'$("#cart").dialog("open")'
То данные отправляются, но окно не всплывает, точнее оно вообще не отображается…
Charger
(Charger)
July 25, 2013, 6:29pm
2
А откуда модальное окно берет данные? Если запрашивает их аяксом, то не включается ли в этот ответ и ненужные JS файлы (например jquery). Одним словом, что за ошибки пишутся в JS консоль браузера?
melomaniac
(Melomaniac2012)
July 25, 2013, 6:44pm
3
Данных в окне вообще нет, просто разметка, вот такая вот:
<!--Cart-->
<div id="cart" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"><em class="icon-remove-circle"></em></button>
<h3 id="myModalLabel">Корзина</h3>
</div>
<div class="modal-body form">
Корзина
</div>
</div>
<!--#Cart-->
А не отправляются данные именно в экшн addtocart, а если окно убрать то все работает, если окно работает, вот эти данные
'data' => array( 'order_code' => $latest['id'], 'product_name' => $latest['title'], 'quantity' => 1)
Не передаются в контроллер
Charger
(Charger)
July 26, 2013, 4:54am
4
Я вас про JS консоль спрашиваю, вы мне про разметку. Так дело не пойдет.
Откуда вы знаете, что данные не отправляются, может они отправляются, но не приходят. Или приходят но не обрабатываются.
melomaniac
(Melomaniac2012)
July 26, 2013, 9:16am
5
Charger:
Я вас про JS консоль спрашиваю, вы мне про разметку. Так дело не пойдет.
Откуда вы знаете, что данные не отправляются, может они отправляются, но не приходят. Или приходят но не обрабатываются.
Ну потому что они у меня в сессию пишутся, а там пусто, значит не отправляются В скриптах ошибок не выдает.
ineersa
(Ineersa)
July 26, 2013, 9:48am
6
В какую сессию?
Данные передаются в $_POST массиве в вашем случае. В мозилле есть такая вещь как firebug, и там есть замечательная консоль для просмотра передаваемых данных (единственное наверное что лучше чем у хрома ).
Замените complete на success, уберите update.
array(
'type' => 'POST',
'data' => array( 'order_code' => $latest['id'], 'product_name' => $latest['title'], 'quantity' => 1),
'success'=>'js:function(data){
$("#cart").empty();
$("#cart").append(data);
$("#cart").dialog("open")}',
)
Данные могут не передаваться по причине 2ной загрузки jquery.
Yii::app()->clientScript->scriptMap['*.js'] = false;
Перед рендером выручает от конфликтов и т.п.
melomaniac
(Melomaniac2012)
July 26, 2013, 3:06pm
7
ineersa:
В какую сессию?
Данные передаются в $_POST массиве в вашем случае. В мозилле есть такая вещь как firebug, и там есть замечательная консоль для просмотра передаваемых данных (единственное наверное что лучше чем у хрома ).
Замените complete на success, уберите update.
array(
'type' => 'POST',
'data' => array( 'order_code' => $latest['id'], 'product_name' => $latest['title'], 'quantity' => 1),
'success'=>'js:function(data){
$("#cart").empty();
$("#cart").append(data);
$("#cart").dialog("open")}',
)
Данные могут не передаваться по причине 2ной загрузки jquery.
Yii::app()->clientScript->scriptMap['*.js'] = false;
Перед рендером выручает от конфликтов и т.п.
Спасибо, попробую. В сессию, которая в actionaddtocart у меня.
ineersa
(Ineersa)
July 26, 2013, 3:11pm
8
Ну да все верно. Вы передаете аяксом данные, они уходят в $_POST и передаются в контроллер. А куда вы уже их пишете в контроллере - к делу совсем не относится.
melomaniac
(Melomaniac2012)
July 26, 2013, 3:27pm
9
[18:26:41.913] TypeError: $("#cart ").dialog is not a function @ http://localhost/:523
Вот что получил с вашим кодом в консоли
ineersa
(Ineersa)
July 26, 2013, 4:00pm
10
Проверьте загрузку jquery ui. Эта ошибка у вас связана либо с 2ной загрузкой оной, либо же ее отсутствием.
melomaniac
(Melomaniac2012)
July 26, 2013, 4:01pm
11
Спасибо, с jquery разобрался, окно появляется, но данные не отправляются