2014-10-06 74 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现在从上面的任何方法

相关问题