jQuery POST请求总是返回Laravel 4找不到的404

时间:2014-04-10 17:20:58

标签: php jquery laravel

每次我尝试使用jQuery发出POST请求时,我都会收到404错误。

这是UserController.php

class UserController extends BaseController {

    public function signUp($username, $password, $email) {

        $user = new User();
        $user->setUsername($username);
        $user->setPassword($password);
        $user->setEmail($email);

        return 'OK';
    }
}

这是routes.php

Route::get('/signup', function(){

    return View::make('signup');
});

Route::post('/signup/{username}/{password}/{email}', 'UserController@signUp');

我总是收到这个错误:

POST http://192.168.0.102/webname/public/signup 404 (Not Found)

为什么?如果我尝试导航到http://192.168.0.102/webname/public/signup,则会加载页面并显示注册表单。

3 个答案:

答案 0 :(得分:2)

您正在使用" GET"类型路线。

让我解释一下。

如果您想使用 / route / {something} / {different} 之类的路线 你必须手动生成一个匹配该路线的URL。

URL::route('route', $something, $different)

变量传递以为POST方法仅在HTTP标头中可用。

因此,您无法通过POST方法传递变量来调用Route :: post(' / route / {variable}')。 仅限于Route :: get()。

使用POST获取变量

Input::get('your_variable_name')

在你的控制器动作中。

抱歉我的英语不好......有点累了,我也是法国人!

答案 1 :(得分:1)

您正在定义

Route::post('/signup/{username}/{password}/{email}', 'UserController@signUp');

但是试图访问:/ webname / public / signup。

POST不存在该模式,但仅适用于GET。

答案 2 :(得分:0)

我遇到了一些与此讨论相关的麻烦,我认为不值得发表自己的帖子:jQuery post 请求一直由我的Laravel get 控制器处理。

我的路线:

Route::controller('/test','TestController');

在我看来:

<script>
    $(document).ready(function() {          
        jQuery.ajax({
            type:'post',
            url: '/test/x/',
            success: function (response) {
                alert(response);
            }
        });
    });
</script>

我的控制器:

public function getX() {
    return 'Get';
}     
public function postX() {
    return 'Post';
}

在页面加载时,我希望看到一条提示“发布”的警告......但我不断看到“获取”。 Laravel将post请求路由到get控制器。

解决这个问题与尾部斜杠有关。显然,Laravel将“/ test / x /”解释为GET路由,但将“/ test / x”解释为POST路由。所以经验教训是Laravel路由可能很微妙。希望这有助于澄清讨论。