将数据从javascript发送到Controller Yii

时间:2014-08-11 20:02:16

标签: javascript php yii

我试图将数组发送到Yii中的控制器的动作,但我一直在获得404。这就是我从javascript发送数据的方式:

$.ajax({
    url: baseUrl + '/user/validateUser',
    data: $('#usr').val(),
    type: 'post',
    dataType: 'json',
    success: function(res)
    {
        console.log(res);
    }
});

在我的UserController中,我有以下操作:

public function actionValidateUser() {
    if ($_POST > 0){
        $username = $_POST['username'];
        var_dump($username);
    }
}

我得到了这样的答复:

Request URL:http://localhost/myapp/user/validateUser
Request Method:POST
Status Code:404 Not Found

我做错了什么?在Zend,我做到了这一点并且工作得很好。在这里......我不知道。

2 个答案:

答案 0 :(得分:1)

好像你的apache重写规则不正确/存在。 在.htaccess文件夹下创建/编辑名为htdocs的文件。将以下内容放入其中:

Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php

保存并重启apache。 确保在apad httpd.conf中启用mod_rewrite

答案 1 :(得分:0)

您的ajax调用接收字符串作为数据,并且没有关于此字符串表示哪个字段的信息。您应该指出此数据代表的字段。

尝试以下代码:

$.ajax({
    url: baseUrl + '/user/validateUser',
    data: { username: $('#usr').val() },
    type: 'post',
    dataType: 'json',
    success: function(res)
    {
        console.log(res);
    }
});

您的原始请求是否正在调用// localhost / myapp / user / validateUser?< username >。但上面的代码将生成对// localhost / myapp / user / validateUser的调用?username =< username >