将数据从javascript发送到控制器Yii

将数据从javascript发送到控制器Yii,javascript,php,yii,Javascript,Php,Yii,我试图从Yii中的控制器向动作发送一个数组,但我一直得到404。以下是我从javascript发送数据的方式: $.ajax({ url: baseUrl + '/user/validateUser', data: $('#usr').val(), type: 'post', dataType: 'json', success: function(res) { console.log(res); } }); 在我的User

我试图从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,我这样做了,效果很好。在这里我不知道。

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

请尝试以下代码:

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

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

的调用,似乎您的apache重写规则不正确/不存在。 在
htdocs
文件夹下创建/编辑名为
.htaccess
的文件。将以下内容放入其中:

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。
确保在apaches httpd.conf中启用了
mod_rewrite

请使用
UrlManager
设置发布配置。打开
http://localhost/myapp/user/validateUser
?您也可以尝试使用相对路径
/user/validateUser
而不是
baseUrl+'/user/validateUser'
@jonijones我意识到在我的本地机器上没有URL在工作。'urlManager'=>array('urlFormat'=>'path','showScriptName'=>false,'rules'=>array('/'/'=>'/view','/'=>'/'/'=>'/'/',),您是否在.htaccess中正确设置了重写规则?如果打开
http://localhost/myapp/index.php?r=user/validateUser
是否在浏览器中?如果得到200 OK的响应,则.htaccess重写有问题。顺便说一句,如果($\u POST>0),你不应该做
。如果(isset($\u POST)和&count($\u POST))
要检查现有的POST数组,最好是
。@chris---hahaha,你刚才说的就是这样。但我不知道如何重写它。这也是个问题,仍然不起作用。我猜这是一个配置错误。我的任何操作都无法在本地计算机上运行,服务器上的操作都正常。抱歉,但仍然无法运行。我从
myapp
编辑了本地.htaccess文件,但仍然无法工作。它看起来像你的。p、 s:我将Debian与Apache一起使用,而不是xampp。检查apache配置,确保在apaches httpd.conf的模块部分下启用了mod_rewrite。