我创建了一个带有标签的视图,每个标签都有一个带有ajax提交和gridview的表单。我在选项卡小部件中使用renderpartial来呈现表单和gridview,并在单击提交后过滤gridview。在单击提交按钮之前,选项卡中的所有内容都很好看。单击提交后,它会按预期过滤gridview ..但它不会加载引导程序javascript和css,因此布局完全混乱,选项卡和菜单栏都显示为列表,页面继续加载。
任何人都知道为什么它没有加载我在主配置中预加载的所需脚本和css。从视图中调用ajax函数时,是否必须单独指定一些内容。
编辑:已添加代码
标签小部件代码(producer.php)
<?php $this->widget(
'bootstrap.widgets.TbTabs',
array(
'type' => 'tabs',
'tabs' => array(
array('label' => 'Monthly' ,'id' => 'tab1',
'content' => $this->renderPartial('_prod_monthly',array('dataProvider' => $dataProvider,'dataProvider2' => $dataProvider2 ,'dataProvider3' => $dataProvider3, 'opm' => $opm, 'month' => $month),true,true),
'active' => true),
array('label' => 'Weekly' ,'id' => 'tab2',
'content' => $this->renderPartial('_prod_weekly',array('dataProvider4' => $dataProvider4,'dataProvider5' => $dataProvider5 ,'dataProvider3' => $dataProvider3, 'opm' => $opm, 'week' => $week),true,true)),
array('label' => 'Daily', 'id' => 'tab3', 'content' => 'ABC' )),
)); ?>
部分视图代码(_prod_monthly.php):
$form = $this->beginWidget(
'bootstrap.widgets.TbActiveForm',array(
'id' => 'form_monthly',
'enableAjaxValidation'=>true,
'type' => 'inline',
'method' => 'get',
'htmlOptions' => array('class' => 'well','onsubmit'=>"return false;",/* Disable normal form submit */
'onkeypress'=>" if(event.keyCode == 13){ send2(); } " /* Do ajax call when user presses enter key */),)); ?>
Select Month:
<?php echo CHtml::dropDownList('month', $month,
$sel_month); ?>
Select Employee:
<?php echo CHtml::dropDownList('opm', $opm,
$sel_opm); ?>
<?php $this->widget('bootstrap.widgets.TbButton',
array(
'buttonType'=>'button',
'label'=>'Submit',
'type' =>'primary',
'htmlOptions'=> array('onclick' => 'send2()'),)
);
$this->endWidget();
$this->widget('bootstrap.widgets.TbExtendedGridView', array(
'sortableRows'=>true,
'afterSortableUpdate' => 'js:function(id, position){ console.log("id: "+id+", position:"+position);}',
'type'=>'striped bordered hover',
'dataProvider'=>$dataProvider,
'type'=>'striped bordered responsive',
'template' => "{summary}\n{items}\n{extendedSummary}\n{exportButtons}"));?>
<script type="text/javascript">
function send2()
{
var data=$("#form_monthly").serialize();
$.ajax({
type: 'GET',
url: '<?php echo Yii::app()->createAbsoluteUrl("op/producers"); ?>',
data:data,
success:function(data){
document.write(data);
},
error: function(data) { // if error occured
alert("Error occured.please try again");
alert(data);
},
dataType:'html'});
}
</script>
感谢。
答案 0 :(得分:1)
目前没有基于Yii的解决方案来处理使用AJAX的UI-Widgets,而且永远不会来。
可能在Yii2中永远不会再发生这种情况。主要问题是你缺少的JS-Ressources和Binding(正如你所知)。 Yii将在布局过程中生成那些代码(您缺少这些代码),这些代码未在&#34; AJAX&#34; -Requests上调用。不要试图自己输入JS-Ressources。 Yii生成的JS-Cods真的很棘手......而且不容易处理manualy。这会产生很多问题。
我的解决方案:我不使用Yii中包含的任何&#34; UI&#34; -Features。他们遇到了很多问题(Ajax,Multiple announces等)。自己编写这些功能或使用jQueryUI并不难。
看一下Tab feature并尝试自己写一下......快乐! :)