2015-10-13 4 views
0

Я попытался отправить форму с помощью ajax. Ниже мой код:Отправить данные формы с помощью Ajax в Yii1

код контроллера:

public function actionIndex($complaint, $work) 
    { 
     ... 
     $this->render('index',array(
      'model'   => $model, 
      'work_order' => $work_order, 
      'work'   => $work, 
      'complaint'  => $complaint, 
      'work_complaint'=> $work_complaint 
     )); 
    } 

Аякса действие

public function actionCreate($complaint,$work) 
    { 
    ... 

     $this->renderPartial('create',array(
      'model'    => $model, 
      'complaint'   => $complaint, 
      'work'    => $work, 
      'work_complaint' => $work_complaint, 
      'work_order'  => $work_order, 
      'man_hour'   => $man_hour, 
      'jobs'    => $jobs, 
     )); 
    } 

мои взгляды

create.php

<h1>Add Job</h1> 

<?php $this->renderPartial('_form', array('model'   => $model, 
              'work_complaint' => $work_complaint, 
              'work_order'  => $work_order,   
              'man_hour'  => $man_hour,  
              'jobs'   => $jobs, 
              'complaint'  => $complaint, 
              'work'   => $work 
         )); ?> 

мой _form.php

<div class="form"> 



<?php $form=$this->beginWidget('CActiveForm', array(
      'id'=>'post-form', 
      'enableAjaxValidation'=>false, 
    )); ?> 
... 

    <div class="row buttons"> 
     <div class="col-md-6 col-lg-6" > 
     <?php echo CHtml::ajaxSubmitButton ("Post", 
       array('complaintJob/create','complaint'=>$complaint,'work'=>$work), 
          array('update' => '#post')); ?> 
     </div> 
    </div> 



<?php $this->endWidget(); ?> 

</div><!-- form --> 

мой index.php

<div id="post"> 

<?php 
     $man_hour  = ManHourMaster::model()->findByPk(1); 
     $jobs   = Job::model()->with('job_category1')->findAll("job_category1.is_separate = 0"); 
     $this->renderPartial('create',array(
        'model'    => $model, 
        'complaint'   => $complaint, 
        'work'    => $work, 
        'work_complaint' => $work_complaint, 
        'work_order'  => $work_order, 
        'man_hour'   => $man_hour, 
        'jobs'    => $jobs, 
       )); 
?> 
</div> 
... 

поэтому, когда я запускаю этот код я получить форму, и когда я представить его, я в основном получить 2 копии одного и того же вида.

+0

Это слишком много кода. Не могли бы вы предоставить минимальный репродукт? И что вы пытались решить проблему. – qxg

ответ

0

я попробовал это один и он работал

<?php $form=$this->beginWidget('CActiveForm', array(
     'id'=>'complaint-job-form', 
     'enableAjaxValidation'=>true, 
     'clientOptions'=>array(
      'validateOnSubmit'=>true, 
      'afterValidate'=>'js:function(form,data,hasError){ 
         if(!hasError){ 
           $.ajax({ 
             "type":"POST", 
             "url":"'.CHtml::normalizeUrl(array('complaintJob/create','complaint'=>$complaint,'work'=>$work)).'", 
             "data":form.serialize(), 
             "success":function(data){ 
             toastr.success("Saved successfully.", "Success"); 
             $("#results").html(data); 
             $("#ComplaintJob_job_id").select2("val", ""); 
             }, 

             }); 
           } 
         }' 
     ), 
)); ?> 
Смежные вопросы