Вопрос По Ajax

Всем добрый вечер, домучал почти 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")'

То данные отправляются, но окно не всплывает, точнее оно вообще не отображается… :(

А откуда модальное окно берет данные? Если запрашивает их аяксом, то не включается ли в этот ответ и ненужные JS файлы (например jquery). Одним словом, что за ошибки пишутся в JS консоль браузера?

Данных в окне вообще нет, просто разметка, вот такая вот:




<!--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)



Не передаются в контроллер :(

Я вас про JS консоль спрашиваю, вы мне про разметку. Так дело не пойдет.

Откуда вы знаете, что данные не отправляются, может они отправляются, но не приходят. Или приходят но не обрабатываются.

Ну потому что они у меня в сессию пишутся, а там пусто, значит не отправляются :) В скриптах ошибок не выдает.

В какую сессию? :blink:

Данные передаются в $_POST массиве в вашем случае. В мозилле есть такая вещь как firebug, и там есть замечательная консоль для просмотра передаваемых данных (единственное наверное что лучше чем у хрома :rolleyes: ).

Замените 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 у меня.

Ну да все верно. Вы передаете аяксом данные, они уходят в $_POST и передаются в контроллер. А куда вы уже их пишете в контроллере - к делу совсем не относится.

[18:26:41.913] TypeError: $("#cart").dialog is not a function @ http://localhost/:523

Вот что получил с вашим кодом в консоли :blink:

Проверьте загрузку jquery ui. Эта ошибка у вас связана либо с 2ной загрузкой оной, либо же ее отсутствием.

Спасибо, с jquery разобрался, окно появляется, но данные не отправляются :blink: