Yii:Javascript& Ajax调用后没有加载CSS

时间:2014-08-24 09:11:01

标签: javascript php css ajax yii

我创建了一个带有标签的视图,每个标签都有一个带有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); ?> &nbsp;
Select Employee: 
<?php echo CHtml::dropDownList('opm', $opm,
           $sel_opm); ?> &nbsp;              
     <?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>

感谢。

1 个答案:

答案 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并尝试自己写一下......快乐! :)