在yii中通过ajax将数据发送到控制器

时间:2014-10-06 19:15:39

标签: php jquery ajax yii

首先感谢所有人的帮助,这非常有用。我从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;
    }

我还没有使用数据库,我只是想看看我是否做得很好而且alert(result)向我展示了$nombre的内容,但不是这样,警报显示我所有的视图的HTML代码(是的所有xD)

我也做到了:

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

但没有......

任何人都会帮助我或给我一些想法?再次感谢大家

3 个答案:

答案 0 :(得分:1)

第一个错误:url: "<?php echo Yii::app()->request->baseUrl; ?>/proceso/guardarproceso",

guardarproceso替换为guardarProceso

第二次错误:

$.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

答案 1 :(得分:0)

如果ajax或jquery结果打印页面的html,则通常在url中出现错误。 检查您的网络跳转,看它是否进入您想要的控制器操作。 baseurl也比createUrl慢。尝试Yii :: app() - &gt; createUrl并编辑它直到它到达正确的目的地..但我的理论基础是你的网址不正确。

答案 2 :(得分: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;

           }

我希望你现在可以从上面的任何方法获得