javascript - Yii:Ajax 调用后未加载 Javascript 和 CSS

标签 javascript php css ajax yii

我创建了一个带有选项卡的 View ,每个选项卡都有一个带有 ajax 提交和 gridview 的表单。我在选项卡小部件中使用 renderpartial 来呈现表单和 gridview,并在单击提交后过滤 gridview。在我单击提交按钮之前,选项卡中的一切看起来都很好。单击提交后,它会按预期过滤 gridview。但它不会加载 Bootstrap javascript 和 css,因此布局完全困惑,选项卡和菜单栏都显示为列表,页面继续加载。

任何人都知道为什么它没有加载我在主配置中预加载的所需脚本和 css。从 View 调用 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'  )),

)); ?>

局部 View 代码(_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>

谢谢。

最佳答案

目前没有基于 Yii 的解决方案来使用 AJAX 处理 UI-Widgets,而且永远不会出现。

可能,这在 Yii2 中再也不会发生了。主要问题是关于您缺少的 JS-Ressources 和 Binding(如您所知)。 Yii 将在布局过程中生成那些代码(你缺少的),这不会在“AJAX”请求上调用。不要尝试自己放入 JS-Ressources。 Yii 生成的 JS-Cods 非常棘手......而且手动处理起来并不容易。这会带来很多问题。

我的解决方案: 我不使用 Yii 中包含的任何“UI”功能。它们伴随着很多问题(Ajax、多重声明等)。自己写或者用jQueryUI不难.

看看 Tab feature并尝试自己编写..并快乐! :)

关于javascript - Yii:Ajax 调用后未加载 Javascript 和 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25470166/

相关文章:

php - 使用 Imagick 创建的 Gif 不循环(PHP)

javascript - 在 PHP 中获取多个选择框的值并将它们添加到数组中

html - 在下面的示例中,我如何排列我的文本和我的按钮?

javascript - 如何清理 .innerHTML 的 HTML 内容?

javascript - Extjs 自定义排序

php - : blogger. com、tumblr.com 等博客服务是什么?用于制作动态子域

html - 如何让我的表格在移动 View 中按行折叠

css - 如何使左侧菜单高度动态

javascript - 如果省略response.writeHead()会怎样

javascript - Gulp 获取源代码但忽略某些子扩展