下拉不工作我在aii 1x中提交ajax表单

时间:2014-05-25 20:28:28

标签: ajax yii

我的下拉工作不是以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,
        ));
       }    
}

1 个答案:

答案 0 :(得分:0)

更改您的AJAX网址

尝试

var href = window.localion.href.split('/');
var SITE_URL = href[0] + '//' + href[2] + '/';
$.ajax({
  url: SITE_URL + 'controller/action',
  ........
  ........
});