我的下拉工作不是以ajax表单提交,而是以正常形式工作。
当我做ajax提交时,我在萤火虫中得到错误
“NetworkError:404 Not Found - http://example.com/yii/def/state/create"
但是,当我正常提交时,表格有效。 请帮我解决这个问题 我的ajax视图是_ajax_create_form.php。代码:
<div class="form">
<?php
$form=$this->beginWidget('bootstrap.widgets.TbActiveForm',array(
'id'=>'state-create-form',
'enableAjaxValidation'=>true,
'enableClientValidation'=>true,
'method'=>'post',
'action'=>array("state/create"),
'type'=>'horizontal',
'htmlOptions'=>array(
'onsubmit'=>"return false;",/* Disable normal form submit */
),
'clientOptions'=>array(
'validateOnType'=>true,
'validateOnSubmit'=>true,
'afterValidate'=>'js:function(form, data, hasError) {
if (!hasError)
{
create();
}
}'
),
)); ?>
div class="row"> <?php echo $form->labelEx($model,'country_id'); ?> <?php echo $form->dropDownList($model,'country_id',
CHtml::listData(Country::model()->findAll(),'id','name')); ?> <?php echo $form->error($model,'country_id'); ?> </div>
<div class="modal-footer">
<div class="form-actions">
<?php
$this->widget('bootstrap.widgets.TbButton', array(
'buttonType'=>'submit',
'type'=>'primary',
'icon'=>'ok white',
'label'=>$model->isNewRecord ? 'Create' : 'Save',
));
?>
</div>
</div>
<?php
$this->endWidget(); ?>
</div>
scipt for ajax submit
<script type="text/javascript">
function create()
{
var data=$("#state-create-form").serialize();
jQuery.ajax({
type: 'POST',
url: '<?php
echo Yii::app()->createAbsoluteUrl("state/create"); ?>',
data:data,
success:function(data){
//alert("succes:"+data);
if(data!="false")
{
$('#state-create-modal').modal('hide');
renderView(data);
$.fn.yiiGridView.update('state-grid', {
});
}
},
error: function(data) { // if error occured
alert("Error occured.please try again");
alert(data);
},
dataType:'html'
});
}
function renderCreateForm()
{
$('#state-create-form').each (function(){
this.reset();
});
$('#state-view-modal').modal('hide');
$('#state-create-modal').modal({
show:true,
});
}
</script>
我的控制器代码是
public function actionCreate()
{
$model=new State;
// Uncomment the following line if AJAX validation is needed
$this->performAjaxValidation($model,"state-create-form");
if(Yii::app()->request->isAjaxRequest)
{
print_r($_POST['State']);
if(isset($_POST['State']))
{
$model->attributes=$_POST['State'];
if($model->save())
{
echo $model->id;
}
else
{
echo "false";
}
return;
}
}
else
{
if(isset($_POST['State']))
{
$model->attributes=$_POST['State'];
if($model->save())
$this->redirect(array('view','id'=>$model->id));
}
$this->render('create',array(
'model'=>$model,
));
}
}
答案 0 :(得分:0)
更改您的AJAX网址
尝试
var href = window.localion.href.split('/');
var SITE_URL = href[0] + '//' + href[2] + '/';
$.ajax({
url: SITE_URL + 'controller/action',
........
........
});