我做了一个页面视图/ maessage.php
https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js">
<script>
function getMessage(){
$.ajax({
type:'POST',
url:'/getmsg',
data:{'_token': '{{ csrf_token() }}'},
success:function(data){
$("#msg").html(data.msg);
}
});
}
</script>
<body>
<div id = 'msg'>This message will be replaced using Ajax.
Click the button to replace the message.</div>
<?php
echo Form::button('Replace Message',['onClick'=>'getMessage()']);
?>
</body>
在routes.php中
Route::get('/ajax',function(){
return view('message');
});
路线::交(&#39; /的getMsg&#39;,&#39; AjaxController @指数&#39);
AjaxController.php中的
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class AjaxController extends Controller
{
public function index(){
$msg = "This is a simple message.";
return response()->json(array('msg'=> $msg), 200);
}
}
当我跑http://localhost:8000/ajax时 http://localhost:8000/getmsg生成以下错误
糟糕,看起来出了问题。
RouteCollection.php第218行中的1/1 MethodNotAllowedHttpException:in RouteCollection.php第218行和错误的错误......
但是当我在consol中看到它显示以下错误
VerifyCsrfToken.php第53行中的TokenMismatchException:in VerifyCsrfToken.php第53行
我无法理解错误。我更喜欢laravel。我实际上并不知道message.php中&#39; _token&#39;:'{{ csrf_token() }}'
的含义。请。帮助解决这个错误。
答案 0 :(得分:0)
此例外:
MethodNotAllowedHttpException
告诉您表单上的方法与路线上的方法不同。
因此,您有2个选项可以解决此问题。
第一个选项:更改路线方式类型 您的路线有GET
Route::get('/ajax',function(){
return view('message');
});
但您的表单有一个POST
所以将其改为:
Route::post('/ajax',function(){
return view('message');
});
第二个选项:更改您的ajax表单方法类型
Route::get('/ajax',function(){
return view('message');
});
<script>
function getMessage(){
$.ajax({
type:'GET',
url:'/getmsg',
data:{'_token': '{{ csrf_token() }}'},
success:function(data){
$("#msg").html(data.msg);
}
});
}
</script>
关于您关于CSRF的问题。它可以防止跨站点伪造。您可以在此处阅读:https://laravel.com/docs/5.4/csrf