2012-12-22 40 views
0

控制器:警予AJAX提交表單

public function actionCreate() { 
    $model = new SiteWidget; 
    if (isset($_POST['SiteWidget'])) { 
     $model -> attributes = $_POST['SiteWidget']; 
     if ($model -> validate()) { 
      if ($model -> save()) 
      { 
       return 'OK'; 
      }  
     } 
    } 
    $this -> render('create', array('model' => $model,)); 
} 

觀點:

<div class="form"> 
    <?php $form=$this->beginWidget('CActiveForm', array(
     'id'=>'site-widget-form', 
     'enableAjaxValidation'=>false, 
     'htmlOptions'=>array(
         'onsubmit'=>"return false;", 
         'onkeypress'=>" if(event.keyCode == 13){ send(); } " 
           ), 
    )); ?> 

    <p class="note"> 
     Fields with <span class="required">*</span> are required. 
    </p> 

    <?php echo $form -> errorSummary($model); ?> 

    <div class="row"> 
     <?php echo $form -> labelEx($model, 'title'); ?> 
     <?php echo $form -> textField($model, 'title', array('size' => 60, 'maxlength' => 256)); ?> 
     <?php echo $form -> error($model, 'title'); ?> 
    </div> 

    <div class="row"> 
     <?php echo $form -> labelEx($model, 'type'); 
      echo $form -> dropDownList($model, 'type', SiteWidget::getConstants('W_', 'SiteWidget')); 
      echo $form -> error($model, 'type'); ?> 
    </div> 
    <div class="row"> 
     <?php echo $form -> labelEx($model, 'status'); ?> 
     <?php echo $form -> checkBox($model, 'status'); ?> 
     <?php echo $form -> error($model, 'status'); ?> 
    </div> 
    <div class="row buttons"> 
     <?php echo CHtml::submitButton($model -> isNewRecord ? 'Create' : 'Save',array('onclick'=>'send();')); ?> 
    </div> 
    <?php $this -> endWidget(); ?> 
</div> 

<script language="JavaScript"> 
function send(){ 
    var data=$("#site-widget-form").serialize(); 

     $.ajax({ 
      type: 'POST', 
      url: '<?php echo Yii::app()->createAbsoluteUrl("siteWidget/create"); ?>', 
      data:data, 
      success:function(data){ 
         alert(data); 
         }, 
      error: function(data) { 
       alert("Error occured.please try again"); 
      }, 
      dataType:'html' 
     }); 
} 
</script> 

爲什麼AJAX不起作用? 我在哪裏犯錯?

回答

0

數據應該是一個JavaScript對象,也許serialize()會產生問題? 這裏是jQuery - AJAX article with working example :)

+0

請從網站在這裏添加revelant信息,並提供鏈接作爲只有參考。 – j0k

+0

不,序列化是正確的,但表單沒有提交到writed地址。我不知道爲什麼?! – Chalist

0

解決方案:

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'site-widget-form', 
    'enableAjaxValidation'=>true, 
    'htmlOptions'=>array(
        'onsubmit'=>"return false;", 
        'onkeypress'=>" if(event.keyCode == 13){ send(); } " 
          ), 
)); ?> 

查看更多ajax submition button with valiation here