每次我尝试使用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
,则会加载页面并显示注册表单。
答案 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路由可能很微妙。希望这有助于澄清讨论。