2016-03-05 184 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請求。