Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php jQuery POST请求总是返回404,但在Laravel 4中找不到_Php_Jquery_Laravel - Fatal编程技术网

Php jQuery POST请求总是返回404,但在Laravel 4中找不到

Php jQuery POST请求总是返回404,但在Laravel 4中找不到,php,jquery,laravel,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->

每次我尝试使用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';
    }
}
Route::get('/signup', function(){

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

Route::post('/signup/{username}/{password}/{email}', 'UserController@signUp');
这是
routes.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';
    }
}
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
页面已加载并显示注册表单。

您正在使用“获取”类型的路由

让我解释一下

如果您想使用像/route/{something}/{distance}这样的路由 您必须手动生成与该路由匹配的URL

URL::route('route', $something, $different)
传递的变量think POST方法仅在HTTP头中可用

所以不能通过post方法传递变量来调用Route::post('/Route/{variable}')。 仅使用Route::get()

使用POST获取变量的步骤

Input::get('your_variable_name')
在控制器操作中

对不起,我的英语不好。。。有点累了,我也是法国人

您正在定义

Route::post('/signup/{username}/{password}/{email}', 'UserController@signUp');
但正在尝试访问:/webname/public/signup


这种模式不适用于POST,而只适用于GET。

我遇到了一些与本次讨论相关的问题,在我看来,这些问题不值得发布自己的帖子: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>
在页面加载时,我希望看到一个警告,上面写着“Post”。。。但我一直在看“得到”。Laravel正在将post请求路由到get控制器


解决这个问题必须使用尾部斜杠。显然,Laravel将“/test/x/”解释为GET路由,但将“/test/x”解释为POST路由。因此,教训是,Laravel路由可能很微妙。希望这有助于澄清讨论。

为什么您的URL中有
/webname/public
?这看起来很糟糕。我知道,但我刚刚安排了拉威尔……谢谢你的回答,我已经解决了我的问题:)别担心你的英语,很好:)