【发布时间】:2014-04-25 10:56:22
【问题描述】:
我的应用中有一个使用 ajax 进行更新的表单。我最初有 3 个下拉列表,但在 ajax 调用号增加之后。这是我的表格
<?php $form=$this->beginWidget('bootstrap.widgets.TbActiveForm',array(
'id'=>'schedule-form',
'enableAjaxValidation'=>false,
)); ?>
<p class="help-block">Fields with <span class="required">*</span> are required.</p>
<?php echo $form->errorSummary($model); ?>
<?php echo $form->dropDownListRow($model,'class_id',$classes); ?>
<?php echo $form->dropDownListRow($model,'day_id',$days,array('selected'=>$i)); ?>
<?php echo $form->dropDownListRow($model,'teacher_id',$days); ?>
<?php echo CHtml::textField('', '',array('id'=>'search-field')); ?>
<div id="copy1">
</div>
<div class="form-actions">
<?php $this->widget('bootstrap.widgets.TbButton', array(
'buttonType'=>'submit',
'type'=>'primary',
'label'=>$model->isNewRecord ? 'Create' : 'Save',
)); ?>
</div>
<?php $this->endWidget(); ?>
<?php $url=Ccontroller::createUrl('schedule/ajaxSchedule'); Yii::app()->clientScript->registerScript('search', "
$('#search-field').keyup(function(){
$.ajax(
{
url:'".$url."',
data:{ajaxdata:$(this).val()},
success:function(data){
$('#copy1').empty();
$('#copy1').html(data);
},
}
);
});
");
?>
当我输入 inm textfield 时,它会进行 ajax 调用。 Ajax 调用是完美的并返回所需的数据。在我返回的数据中,我有一些重复的小部件。它们在那里显示得很好,没有问题。但是当我提交表单时,我只能从最后一个小部件中获得结果。甚至最初的下拉菜单也没有发布,我的意思是他们的结果没有发布。我做错了什么?
这是我的 ajax 重新调整的代码。
<?php
for($i=0;$i<$numberOfperiods;$i++ ){
?>
<div class="row copy">
<?php echo CHtml::dropDownList('Schedule','subject_id[]',$courses,array('id'=>'subject_is'.$i)); ?>
<?php $config1=array('model' => $model,
'attribute'=>'start_time[]','htmlOptions'=>array('id'=>'start_time'.$i));
$this->widget(
'bootstrap.widgets.TbTimePicker', $config1
);
?>
<?php $config=array('model' => $model,
'attribute'=>'end_time[]','htmlOptions'=>array('id'=>'end_time'.$i));
$this->widget(
'bootstrap.widgets.TbTimePicker', $config
);
?>
</div>
<?php } ?>
循环运行良好。假设我有 numberOfperiods =6,所以将显示 6 个小部件。但是当我提交时,只提交最后一个小部件的结果。
【问题讨论】:
-
可以添加输入的渲染html
-
我已经检查过并将其从 8M 增加到 20M,但结果仍然相同。而且我还发送了比这更多的数据。但我不确定为什么会这样。