2017-12-14 9 views
0

私はlaravelにフォームを持っています。なぜメソッドはHTTP例外を許可されていませんか?

私は、ajax投稿要求を使用してサーバーにデータを送信したいと考えています。

エラーが発生します。どうしてか分かりません?

My view source url is : http://localhost/lily/public/search 

(1/1)MethodNotAllowedHttpException

RouteCollection.phpで

(ライン251)

RouteCollection-で> methodNotAllowed(配列( 'GET'、 'HEAD')) RouteCollection.phpで

(ライン238)

<!DOCTYPE html> 
<html> 
    <head> 
     <title></title> 
     <script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" 
     crossorigin="anonymous"></script> 
    </head> 
    <body> 
     <script type="text/javascript"> 
      $(document).ready(function() { 
       $("#submit").submit(function(){ 
        var name = $("#name").val(); 
        console.log(name); 
        $.ajax({ 
         type: "POST", 
         url : "{{url('/search')}}", 
         data : name , 
         success : function(data) 
         { 
          console.log(data) 
         }, 

         error : function(error) 
         { 
          console.log(error) 
         } 
        }); 
       }); 
      }); 
     </script> 

     <div class="col-md-6 offset-3"> 
      <form id="submit" method="POST"> 
       <input type="name" name="name" id="name"> 
       <button type="submit" class="btn btn-success">search</button> 
      </form> 
     </div> 
    </body> 
</html> 

Route::post('/search/{name}', '[email protected]'); 

public function in() { 
    return json("fdfdfdfdfdf"); 
} 
+0

使用しているメソッドのルートが存在しますか。 POST、PUT、DELETEなど?また、CSRF保護を有効にしていますか?あなたはトークンを通過する必要があります。 https://laravel.com/docs/5.5/csrf#csrf-x-csrf-token – Mike

+0

生成されたフォームアクションの実際の内容は何ですか? – Amarnasan

+0

これはTokenMismatchException – Bugfixer

答えて

1

/search /パラメータの経路を定義しましたが、アクションは「/ search」のみです。

ルート内の無駄な{名前}部分を削除します。それともそれは、オプションの{名前}?

+0

まだ動作していません!!!!!!!!!! –

+0

ビューからコントローラへの簡単な実例plzを教えてもらえますか? –

+1

生成されたHTMLコードを表示できますか? – Amarnasan

0

{name}を削除するか、それが{name?}オプション、あなたのdata入力

$(document).ready(function() { 

    $("#submit").submit(function() { 

     e.preventDefault(); // Prevent the Default Form Submission 
     var name = $("#name").val(); 
     console.log(name); 

     $.ajax({ 
      type: "POST", 
      url: "{{ url('/search') }}", 
      data: { 
       name: name, 
       _token: "{{ csrf_token() }}" 
      }, 
      success: function(data) { 
       console.log(data) 
      }, 
      error: function(error) { 
       console.log(error) 
      } 
     }); 
    }); 

}); 

にを変更することするか、あなたのルート定義を変更した後、トークンに沿って要求にCSRFを渡して作りますあなたは隠された型としてCSRFトークン値を追加しませんでしたのでタイプは text代わりの形

<input type="text" name="name" id="name"> 
+0

ビューからコントローラへの簡単な使用例plzを教えてください –

+0

@MirthfulNahid更新されたコードを確認してください – linktoahref

1

nameでなければなりません。

フォームにCSRF非表示入力を追加する必要があります。

<input type="hidden" name="_token" value="{{ csrf_token() }}" /> 
関連する問題