html форма не отправляет ajax запрос контроллеру - PullRequest
0 голосов
/ 24 июня 2018

Я пытаюсь использовать ajax при добавлении в корзину. но кажется, что HTML-форма не отправляет ajax-запрос. Когда я нажимаю на кнопку Добавить в корзину. он показывает черную страницу, потому что я использую этот метод проверки AJAX на контроллере.

Контроллер

 public function addToCart(Request $request){

    $product = Product::find($request->product_id);
    Cart::add($product->id, $product->title, 1, $product->price);

    $response = array(
        'status' => 'success',
        'msg' => 'Setting created successfully',
    );



    if($request->ajax())
        return \Response::json($response);

}

Javascript - AJAX

$('#add').on('submit', function (e) {
     e.preventDefault();
     var pid = $('#product_id').val();
     var cat = $('#category_id').val();
     $.ajax({
          type: "POST",
          url: host + '/addToCart',
          data: {product_id: pid, category_id: cat},
          success: function( msg ) {
               $("#xx").append("<div>"+msg+"</div>");
          }
     });
 });

Форма HTML

<form id="add" action="{{ route('addToCart') }}" method="POST">
    {{csrf_field()}}
    <input type="hidden" id="category_id" name="category_id" value="{{ $px->category_id }}">
    <input type="hidden" id="product_id" name="product_id" value="{{ $px->id }}">
    <input type="submit" value="Add to Cart" class="bg-color-input">
</form>
<div id="xx"></div>

где я ошибся?

1 Ответ

0 голосов
/ 24 июня 2018

если вы забыли отправить csrf_token, вы можете решить его следующим образом:

 <form id="add" action="{{ route('addToCart') }}" method="POST">
{{csrf_field()}}
<input type="hidden" id="category_id" name="category_id" value="{{ $px->category_id }}">
<input type="hidden" id="product_id" name="product_id" value="{{ $px->id }}">
<input type="button" id="submitBtn" value="Add to Cart" class="bg-color-input">
</form>
<div id="xx"></div>


 $('document').on('click','#submitBtn',function(){
 e.preventDefault();
 var pid = $('#product_id').val();
 var cat = $('#category_id').val();
 $.ajax({
      type: "POST",
      url: host + '/addToCart',
      data: {product_id: pid, category_id: cat,'_token','{{csrf_token()}}'},
      success: function( msg ) {
           $("#xx").append("<div>"+msg+"</div>");
      }
 });
});

или вы можете сериализовать форму:

    $('document').on('click','#submitBtn',function(){
   e.preventDefault();
 $.ajax({
      type: "POST",
      url: host + '/addToCart',
      data:$('#add').serialize(),
      success: function( msg ) {
           $("#xx").append("<div>"+msg+"</div>");
      }
 });
 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...