2016-03-02 66 views
0

我在网上搜索和我发现这个问题的答案是确保我不使用2获取或同名的职位。但我不是。我只是在网上做了一个关于如何使用laravel使用ajax的快速教程,但每次尝试使用post时都会出现此错误。当我使用get它工作正常。如果有人能够解释这个问题,我会很感激吗?谢谢。Laravel(ajax)404找不到

POST http://ajaxlaravel.app:8000/register 404(未找到)

这里是我的welcome.blade文件:

<!DOCTYPE html> 
<html> 
<head> 
    <title>Laravel</title> 
    <meta name="csrf-token" content="{{ csrf_token() }}" />> 

    <!-- Latest compiled and minified CSS --> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous"/> 

</head> 
<body> 
    <div class="container"> 
     <h2>Register form</h2> 

     <div class="row col-lg-5"> 
      <h2>Get Request</h2> 
      <button type="button" class="btn btn-warning" id="getRequest">getRequest</button> 
     </div> 

     <div class="row col-lg-5"> 
      <h2>Request Form</h2> 
      <form id="register" action="#"> 
       {{ csrf_field() }} 
       <label for="firstname"> 
        Firstname: <input type="text" id="firstname" class="form-control" placeholder="John"/> 
       </label><br> 

       <label for="lastname"> 
        Lastname: <input type="text" id="lastname" class="form-control" placeholder="Smith"/> 
       </label><br><br> 

       <input type="submit" value="Register" class="btn btn-primary"> 
      </form> 
     </div> 
    </div> 



    <div id="getRequestData"></div> 

    <div id="postRequestData"></div> 

    <script type="text/javascript" src="{{asset('js/jquery.js')}}"></script> 
    <script type="text/javascript"> 
     $.ajaxSetup({ 
      headers: { 
       'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
      } 
     }); 

     $(document).ready(function(){ 
      $('#getRequest').click(function(){ 
       $.get('getRequest', function(data){ 
        $('#getRequestData').append(data); 
        console.log(data); 
       }); 
      }); 

      $('#register').submit(function(){ 
       var fname = $('#firstname').val(); 
       var lname = $('#lastname').val(); 

       $.post('register', {firstname:fname, lastname:lname}, function(data){ //Take data from form register and post it but give a call back function using data. 
        console.log(data); 
        $('#postRequestData').html(data); 
       }); 
      }); 
     }); 
    </script> 

</body> 
</html> 

我的路线:

Route::group(['middleware' => ['web']], function() { 
Route::get('/', '[email protected]'); 

Route::get('/getRequest', function(){ 
    if(Request::ajax()){ //Does a check to see if the request is ajax. 
     return 'getRequest loaded completely'; 
    } 

    Route::post('/register', function(){ 
     if(Request::ajax()){ 
      return Response::json(Request::all()); 
     } 
    }); 
}); 
}); 

而且我WelcomeController:

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

use App\Http\Requests; 

class WelcomeController extends Controller 
{ 
public function _construct(){ 
    $this->middleware('guest'); 
} 

/* 
* Show application review 
* 
* @return response 
*/ 
public function index(){ 
    return view('welcome'); 
} 
} 

而且我VerifyCrsffToken.php:

<?php 

namespace App\Http\Middleware; 

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier; 

class VerifyCsrfToken extends BaseVerifier 
{ 
/** 
* The URIs that should be excluded from CSRF verification. 
* 
* @var array 
*/ 
protected $except = [ 
    // 
]; 

/** 
* Determine if the session and input CSRF tokens match. 
* 
* @param \Illuminate\Http\Request $request 
* @return bool 
*/ 
protected function tokensMatch($request) 
{ 
    // If request is an ajax request, then check to see if token matches token provider in 
    // the header. This way, we can use CSRF protection in ajax requests also. 
    $token = $request->ajax() ? $request->header('X-CSRF-Token') : $request- >input('_token'); 

    return $request->session()->token() == $token; 
} 
} 
+0

那是注册页吗?或请求? – aldrin27

回答

2

更改后的URL public/register"<?php echo url('/register');?>"

正常关闭你的路由

Route::get('/getRequest', function(){ 
    if(Request::ajax()){ //Does a check to see if the request is ajax. 
     return 'getRequest loaded completely'; 
    }});//here 

    Route::post('/register', function(){ 
     if(Request::ajax()){ 
      return Response::json(Request::all()); 
     } 
    }); 
+0

尝试并获得:POST http://ajaxlaravel.app:8000/public/register 404(Not Found) – Niall

+1

这是问题的路由关闭。我会在一分钟内接受你的回答。非常感谢你。对此,我真的非常感激。 – Niall

0

试着改变你的文章网址public/index.php/register