2014-10-06 170 views
1

首先感謝大家的幫助,這非常有用。我以yii開頭,我有點失落了。通過ajax發送數據到控制器yii

我已經創建了一個jQuery腳本,用於驗證表單,然後將其發送給我的控制器以使用它並保存在數據庫中。

但我做錯了我認爲我不能連接我的控制器。下面是代碼:

jQuery腳本(畢竟驗證的東西,這些變量都很好):

$.ajax({ 
      type: "POST", 
      url: "<?php echo Yii::app()->request->baseUrl; ?>/proceso/guardarproceso", 
      data: 
      { 
      post_nombre: nombre, 
      post_empresa: empresa, 
      post_fechaI: fechaI, 
      post_fechaF: fechaF, 
      post_descripcion: descripcion 
      }, 
      success: function(result) 
      { 
      alert(result); 
      } 
     }); 

而且我的控制器ProcesoController

public function actionGuardarProceso(){ 

      $nombre = $_POST['post_nombre']; 
      $empresa = $_POST['post_empresa']; 
      $fechaI = $_POST['post_fechaI']; 
      $fechaF = $_POST['post_fechaF']; 
      $descripcion = $_POST['post_descripcion']; 

      echo $nombre; 
    } 

我不是與DB工作尚未,我只想看看我是否做得很好,並且alert(result)顯示我的內容爲$nombre,但不是該提示會顯示視圖的所有html代碼(是的,所有的xD)

我已經做了太多:

public function accessRules() 
    { 
     return array(
      array(
        'allow', 
        'actions'=>array('index','guardarproceso'), 
        'users'=>array('*'), 
      ), 
     ); 
    } 

但沒有......

任何cuold幫助我或者給我一些想法?謝謝大家再次

+0

在創建和更新密鑰中添加操作,併爲function'actions'=> array('create','update','guardarProceso')給出正確的名稱, – 2014-10-07 07:29:56

回答

0

如果AJAX或jQuery的結果打印的頁面其通常是錯誤的HTML在網址中。 檢查你的網絡跳轉,看看它是否去你想要的控制器操作。 baseurl比createUrl慢。嘗試Yii :: app() - > createUrl並編輯它,直到它到達正確的目的地..但我的理論的基礎是,你的網址是不正確的。

+0

是的,這是錯誤,網址沒有很好地定義。我設定了一條絕對路徑,感謝所有的幫助 – 2014-10-07 18:27:58

1

1錯誤:url: "<?php echo Yii::app()->request->baseUrl; ?>/proceso/guardarproceso",

代之以guardarprocesoguardarProceso

第二個錯誤:

$.ajax({ 
    type: "POST", 
    url: url, 
    data: data, 
    success: success, 
    dataType: dataType 
}); 

dataType是丟失;它應該是json

讀到這裏http://api.jquery.com/jquery.post/

此外,在控制器動作actionGuardarProceso,用途:

echo json_encode(array('key'=>$nombre)); exit

+0

感謝您的幫助,我已經做了這些改變,但它仍然無法正常工作 – 2014-10-06 20:08:36

0
$.ajax({ 
       type: "POST", 
       url: "<?php echo Yii::app()->request->baseUrl; ?>/proceso/guardarproceso", 
       data: 
       { 
       post_nombre: nombre, 
       post_empresa: empresa, 
       post_fechaI: fechaI, 
       post_fechaF: fechaF, 
       post_descripcion: descripcion 
       }, 
      success: function(result) { 
       alert(result); 
      }, 
      error:function(jqXHR, textStatus, errorThrown){ 
       alert('error::'+errorThrown); 
      } 
      }); 

第一次嘗試這樣你會得到後的數據或不

public function actionGuardarProceso(){ 
echo "<pre>"; 
print_r($_POST); 
exit; 

    } 

如果沒有得到任何數據,嘗試用你的模型

public function actionGuardarProceso(){ 
     $model = new modelname; 
     echo $_POST['modelname']['post_nombre']; 
     exit; 

     } 

別的嘗試用以下

public function actionGuardarProceso(){ 
      echo Yii::app()->request->getPost("post_nombre"); 
     exit; 

      } 

我希望你會ge t現在從上面的任何方法

相關問題