我试图将数组发送到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,我做到了这一点并且工作得很好。在这里......我不知道。
答案 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 >