2016-09-04 7 views
0

このシナリオでは、データベースからデータを取得してユーザーに表示したいと考えています。誰かが何らかの入力をしてデータベースに保存している間に、誰かが見るまで常に「0」のステータスを付けます。したがって、入力が送信されると、ユーザーは新しいデータが別のページに挿入されたポップアップ画面が表示されます。 Ajaxは、ステータスといくつかの値を得たときにここに問題がある「0は、」それは、それを画面に示されたが、それは任意の値を取得できなかったとき(when all the status value is 1は)それは、コンソールにエラーが表示されます。PHP Laravel:VerifyCsrfToken.php行のTokenMismatchException 67

TokenMismatchException in VerifyCsrfToken.php line 67

問題を解決するにはどうすればよいですか?ここで

は、ルートである:ここでは

Route::post('/unread',[ 
    'uses'=>'[email protected]', 
    'as'=>'unread' 
    ]); 

Route::post('/s_update',[ 
    'uses'=>'[email protected]_update', 
    'as'=>'s_update' 
    ]); 

はコントローラです:

public function getUnread() 
      { 

       $items=DB::select(DB::raw("SELECT count(*) as total from items where status =0")); 
       // $data=mysql_fetch_assoc($items); 
       return Response::json($items); 
      }  

      public function status_update() 
      { 
       $items=DB::select(DB::raw("UPDATE items SET status=1 WHERE status=0")); 
       return Response::json($items); 
      } 

、ここでは、AJAX呼び出しです:

<script type="text/javascript"> 
        setInterval(function(){ 
          $(".container").load("list", function(){ 
           $.ajaxSetup({ 
            headers: { 
             'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
             } 
           }); 

            $.ajax({ 
            type : "POST", 
            url : "{{url('unread')}}",                
            dataType : 'json',        
            success : function(data) { 

              $.each(data,function(index,subcatObj){                
               if(subcatObj.total != '0') 
               { 
                var yes = confirm('You have '+subcatObj.total+' new messages'); 
                  if(yes){ 
                   status_update(); 
                  } 
               } 

             });        
            }, 
    });                 
         });   
         }, 3000); 

         function status_update(){ 

          $.ajax({ 
           url:"{{url('s_update')}}", 
           method:"POST",                 
          }); 
         }   
       </script> 
+0

'$ .ajaxSetup({ ヘッダー:{ 'のX-CSRF-TOKEN':$( 'メタ[NAME = "CSRFトークン"]')ATTR( 'コンテンツ') } }) ; 'グローバル設定では、$ .ajaxを使用しているたびに宣言する必要はありません。 –

+0

同じ問題が発生しました。 – User57

答えて

1

変更し、このルートでCSRFトークンをgeneraeする

Route::post('/unread',[ 
'uses'=>'[email protected]', 
'as'=>'unread' 
]); 

Route::get('/unread',[ 
'uses'=>'[email protected]', 
'as'=>'unread' 
]); 
0

私はあなたではないため、これがあると思いますlaravel csrfトークンを投稿に送ります。

提供されているcsrf_tokenであるjsonに "_token"というフィールドを送信する必要があります。

はこちらをご覧ください:https://laravel.com/docs/5.3/csrf

+0

タグで使用しました ' <実際のjsonコンテンツにも追加してみてください。meta name = "csrf-token" content = "{{csrf_token()}}"> – User57

+0

jsonデータのcsrf-tokenではなく_tokenでなければなりません。 – pseudoanime

+0

私はそれを "X-CSRF-TOKEN"に変更しました:$( 'meta [name = "_ token"]')。attr( 'content') ' 同じエラーが発生しました – User57

0

{{csrf_field()}}

使用これはあなたのフォーム

+0

フォームの問題はありません.. 意味私はここでフォームを使用していない – User57

関連する問題