【发布时间】:2014-08-24 09:11:00
【问题描述】:
我创建了一个带有选项卡的视图,每个选项卡都有一个带有 ajax 提交和 gridview 的表单。我在选项卡小部件中使用renderpartial 来呈现表单和gridview,并在单击提交后过滤gridview。在我单击提交按钮之前,选项卡中的一切看起来都很好。单击提交后,它按预期过滤了gridview..但它没有加载引导javascript和css,因此布局完全混乱,选项卡和菜单栏都显示为列表,页面继续加载。
任何人都知道为什么它没有加载我在主配置中预加载的所需脚本和 css。从视图调用 ajax 函数时是否必须单独指定一些内容。
编辑:添加代码
标签小部件的代码(producers.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>
谢谢。
【问题讨论】:
-
你能展示你的代码吗?
-
@OnnoRokomHabib 代码已添加..
-
您需要在被Ajax替换的部分中包含Javascript代码。在 Ajax 调用之后,与 Javascript 项的“连接”会丢失。这是 Yii 中众所周知的事情。我认为它将在 Yii2 中解决:-)
-
@user3265427 我尝试手动将所有 javascript 和 css 放入部分渲染文件中。所以 css 已加载,javascript 也已加载。但页面继续加载并且永远不会停止...手动一次停止 ajax 按钮不起作用
标签: javascript php css ajax yii