2016-03-05 145 views
0

我遇到问题。我的jquery提交函数试图做一个GET请求,而我把它设置为一个POST请求。

我提交功能

function authenticate() { 
var form = $('#form-login'); 
form.submit(function(evt) { 
    evt.preventDefault(); 
    console.log('submitting!'); 
    console.log(form.serialize()); 
    $.ajax({ 
     type: 'POST', 
     url: 'http://website.dev/loginz', 
     data: form.serialize(), 
     dataType: 'json', 
     success: function(data) { log_error(data.error); } 
    }); 
}); 
} 

routes.php文件

Route::post('loginz', 'User\[email protected]'); 

什么我的Chrome浏览器说

GET http://website.dev/loginz/ 405 (Method Not Allowed) 

/Loginz

/* POST */ 
function authenticate(Request $request) { 
    $username = $request->input('username'); 
    $password = $request->input('password'); 
    if(Auth::attempt(['username' => $username, 'password' => $password])) { 
     redirect()->route('home'); /* should redirect to player */ 
    } 
    return response()->json(['error' => trans('errors.user_password_combination').' => '.$username.' & '.$password]); 
} 

也许我只是愚蠢的,打了一堵墙,我盯着自己死亡,我只是看不到错误:P

+1

检查网络选项卡中的错误... – Rayon

+0

谢谢,它做了301:S ..修复它与网址:http://website.dev/loginz/ ..添加了一个斜杠,所以它没有301到/ –

+0

请不要编辑你的问题的解决方案。相反,请将其作为下面的单独答案发布。 – Matt

回答

0

你使用的是什么版本的laravel?

提醒csrf令牌必须给予发布请求。

还可以禁用CSRF核查\App\Http\Middleware\VerifyCsrfToken::class,

但是,如果你在设置客户端上的效果会更好。 从laravel这意味着你应该在刀片模板添加类似:

$(document).ready(function() { 
    $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': '{{ csrf_token() }}' } }); 
}); 

但首先,在Chrome浏览器(例如)检查 - >网络 - >标题:什么是请求方法?

0

故障是301重定向。这个问题是由我自己创造的。我添加了从非斜杠到斜杠(例如/ page到/ page /)的重定向,以便将POST重定向到GET请求。