【问题标题】:Send data through ajax to controller in yii通过ajax发送数据到yii中的控制器
【发布时间】:2014-10-06 19:15:38
【问题描述】:

首先感谢大家的帮助,它非常有用。我从 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('*'),
            ),
       );
    }

什么都没有……

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

【问题讨论】:

  • 在 create 和 update 键中添加操作,并为函数命名为'actions'=>array('create','update','guardarProceso'),

标签: php jquery ajax yii


【解决方案1】:

第一个错误:url: "&lt;?php echo Yii::app()-&gt;request-&gt;baseUrl; ?&gt;/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

【讨论】:

  • 感谢您的帮助,我已经完成了这些更改,但仍然无法正常工作
  • 你能看看我的question 之一吗?
【解决方案2】:

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

【讨论】:

  • 是的,这是错误,url 没有定义好。我设置了绝对路径,谢谢大家的帮助
【解决方案3】:
 $.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);
            }
            });

先试试这个你会不会得到post数据

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;

           }

我希望你现在能从上面得到任何方法

【讨论】:

  • 你能看看我的question 之一吗?
猜你喜欢
  • 2014-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多