За последние 24 часа нас посетили 20894 программиста и 1130 роботов. Сейчас ищут 346 программистов ...

Ajax

Тема в разделе "Laravel", создана пользователем Feonix89, 20 авг 2018.

Метки:
  1. Feonix89

    Feonix89 Новичок

    С нами с:
    30 май 2018
    Сообщения:
    113
    Симпатии:
    2
    Здравствуйте есть такая форма:
    Код (Text):
    1. @extends('layouts.app')
    2.  
    3. @section('content')
    4.     <form id="contactform" method="post" class="validateform">
    5.             <input type="hidden" name="_method" value="PUT">
    6.             <input type="hidden" name="_token" value="{{ csrf_token() }}">
    7.             {{ csrf_field() }}
    8.         <div id="sendmessage">
    9.             Ваше сообщение отправлено!
    10.         </div>
    11.         <div id="senderror">
    12.             При отправке произошла ошибка!
    13.         </div>
    14.         <div class="row">
    15.             <div class="col-lg-4 field">
    16.                 <input type="text" name="name" placeholder="Введите имя">
    17.             </div>
    18.             <div class="col-lg-12 margintop10 field">
    19.                 <p>
    20.                     <button class="btn btn-primary margintop10 pull-left" type="submit">Отправить</button>
    21.                     <span class="pull-right margintop20">Заполните поля</span>
    22.                 </p>              
    23.             </div>
    24.         </div>
    25.     </form>
    26.     <script type="text/javascript">
    27.         $(document).ready(function(){
    28.             $('#contactform').on('submit', function(e){
    29.                 e.preventDefault();
    30.        
    31.                 $.ajax({
    32.                     type: 'POST',
    33.                     url: {{ route('welcome') }},
    34.                     data: $('#contactform').serialize(),
    35.                     success: function(result){
    36.                         console.log(result);
    37.                     }
    38.                 });
    39.             });
    40.         });
    41.     </script>
    42. @endsection
    роуты:
    Код (Text):
    1. Route::get('/', function () {
    2.     return view('welcome');
    3. });
    4.  
    5. Route::post('/welcome', 'Ajax\ContactController@send')->name('welcome');
    и контроллер:
    Код (Text):
    1. <?php
    2.  
    3. namespace App\Http\Controllers\Ajax;
    4.  
    5. use Illuminate\Http\Request;
    6. use App\Http\Controllers\Controller;
    7.  
    8. class ContactController extends Controller
    9. {
    10.     public function send(Request $Request)
    11.     {
    12.          dd($request->all());
    13.     }
    14. }
    Подскажите почему я получаю сообщение:
    вместо результата в консоли?
     
  2. Сереганек

    Сереганек Активный пользователь

    С нами с:
    18 янв 2017
    Сообщения:
    333
    Симпатии:
    27
    А если посмотреть сам запрос, что там видно? все как ожидается? Метод ПОСТ? адрес /welcome?
     
  3. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    Редиректов никаких нету? Слешь/без слеша, с www на без www или ещё что-то в этом роде? Обычно такое веселье начинается именно из-за них, потому что редиректы бывают только методом GET
     
  4. Feonix89

    Feonix89 Новичок

    С нами с:
    30 май 2018
    Сообщения:
    113
    Симпатии:
    2
    ошибка закралась в синтаксис... кавычки там где я указываю url
    Код (Javascript):
    1. <script type="text/javascript">
    2.     $(document).ready(function() {
    3.         $('#contactform').on('submit', function(e){
    4.             e.preventDefault();
    5.             $.ajax({
    6.                 type: 'POST',
    7.                 url: "{{ route('welcome') }}",
    8.                 data: $('#contactform').serialize(),
    9.                 success: function(result){
    10.                     console.log(result);
    11.                     if(result >= 1) {
    12.                         console.log("Такой уже есть");
    13.                     } else {
    14.                     location.href = "{{ route('type_active.create') }}";
    15.                     }
    16.                 }
    17.             })
    18.         })
    19.     })</script>
    вот после исправления
     
  5. Feonix89

    Feonix89 Новичок

    С нами с:
    30 май 2018
    Сообщения:
    113
    Симпатии:
    2
    Подскажите пожалуйста как правильно сделать что-то в интернете ничего похожего найти не могу.
    При вводе нового оборудования нужно указать несколько параметров в инпутах, если введенных данных нет в базе данных то предупредить об этом и дать ссылку на заведение такой позиции в БД.
    Я добавил в route.php -
    PHP:
    1. Route::post('equipment/create', ['as' => 'CreateEquipment', 'uses' => 'Ajax\ContactController@createEquipment']);
    в createEquipment у меня
    PHP:
    1. $equipment_name = $request->equipment_name;
    2.         $equipment_count = DB::table('equipments')
    3.             ->where('name', '=', $equipment_name)
    4.             ->count();
    5.         $equipment_data = array();
    6.         $equipment_data['equipment_name'] = $equipment_name;
    7.         $equipment_data['equipment_count'] = $equipment_count;
    8.         return $equipment_data;
    и во view
    Код (Text):
    1.  
    2. @extends('layouts.app')
    3.  
    4. @section('content')
    5. <div class="container">
    6.     <p class="h1">Оборудование. Создание.</p>
    7.    
    8.     <hr>
    9.     <form class="form-horizontal" action="#" method="post" id="create_equipment_form_id">
    10.         {{ csrf_field() }}
    11.         <fieldset class="form-horizontal">
    12.            
    13.             <div class="form-group">
    14.                 <label class="col-sm-4 control-label">
    15.                     <p class="h4">Наименование оборудования:</p>
    16.                 </label>
    17.                 <div class="col-sm-10">
    18.                     <div class="input-group mb-3">
    19.                         <input type="text" name="equipment_name" class="form-control form-control-user" placeholder="Введите наименование оборудования" value="" id="equipment_name_id">
    20.                     </div>
    21.                       <div class="alert alert-danger" role="alert" id="text_error_equipment_name">
    22.                         Такая позиция уже существует в базе данных. Проверьте правильность введенного наименования.</a>.
    23.                     </div>  
    24.                 </div>
    25.             </div>
    26.             <div class="form-group">
    27.                 <label class="col-sm-4 control-label">
    28.                     <p class="h4">Тип актива:</p>
    29.                 </label>
    30.                 <div class="col-sm-10">
    31.                     <div class="input-group mb-3">
    32.                           <input type="text" name="type_active_id" class="form-control form-control-user" placeholder="Введите тип актива" value="" id="type_active_name_id">
    33.                     </div>
    34.                       <div class="alert alert-danger" role="alert" id="text_error_type_active_name">
    35.                         Такая позиция отсутствует в базе данных. Убедитесь в том, что правильно ввели наименование и/или <a href="{{ route('type_active.create') }}" class="alert-link" id="create_type_active_link">перейдите для создания</a>.
    36.                     </div>
    37.                 </div>
    38.             </div>
    39.  
    40.             <div class="form-group">
    41.                 <div class="col-sm-4 sol-sm-offset-2">
    42.                     <button class="btn btn-primary" type="submit" id="create_equipment_btn">Создать</button>
    43.                 </div>
    44.             </div>
    45.         </fieldset>
    46.     </form>
    47. </div>
    48.  
    49. <script type="text/javascript">
    50.     $(document).ready(function() {
    51.         $('#create_equipment_btn').prop("disabled", true),
    52.         $("#text_error_equipment_name").hide(),
    53.         $("#text_error_type_active_name").hide(),
    54.         $('#equipment_name_id').focusout(function(e){
    55.             e.preventDefault();
    56.             $.ajax({
    57.                 headers: {
    58.                         'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    59.                 },
    60.                 type: 'POST',
    61.                 url: "{{ route('CreateEquipment') }}",
    62.                 data: $('#create_equipment_form_id').serialize(),
    63.                 success:function(result){
    64.                     if (result.equipment_count >= 1) {
    65.                         console.log(result);
    66.                         $("#text_error_equipment_name").show();
    67.                         $("#equipment_name_id").removeClass( );
    68.                         $("#equipment_name_id").addClass("form-control form-control-user inputRed");
    69.                     } else {
    70.                         console.log(result);
    71.                         $("#equipment_name_id").removeClass();
    72.                         $("#equipment_name_id").addClass("form-control form-control-user inputGreen");
    73.                     }
    74.                 }
    75.             })
    76.  
    77.         })
    78.     })
    79. </script>
    80. @endsection
    Если мне нужно проверить второе поле на наличие записи в базе данных что мне делать.?
    Как я рассуждаю: Ввел я наименование затем проверил нет ли такого в базе, потом независимо от того есть он или нет проверяю второй параметр и т.д. Если такого параметра в базе нет то откроется скрытый алерт со ссылко на заведение такой позиции в БД. Тут все понятно. Одного понять не могу как мне проверить второй и последующие параметры??? т.е. мне нужно прописывать новый роут по идее но с таким же адресом например
    PHP:
    1. Route::post('equipment/create', ['as' => 'TestTypeActive', 'uses' => 'Ajax\ContactController@testTypeActive']);
    у меня все разваливается. Что в принципе праильно :) . Как мне пройти этот момент чтобы проверить несколько параметров. И в ajax это должно выглядеть как? $.ajax({}), $.ajax({}), $.ajax({}), $.ajax({}) или как . Очень прошу помощи!!!
     
  6. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    Можно передавать, какой параметр проверить. Ещё одним аргументом
     
  7. Feonix89

    Feonix89 Новичок

    С нами с:
    30 май 2018
    Сообщения:
    113
    Симпатии:
    2
    Несовсем понял. Роут пост у меня остается один? И куда я должен поместить второй параметр в контроллер и возвращать из него массивом?
     
  8. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    @Feonix89, ну типа /data/check?parameter=param1 или /data/check?parameter=param2.

    Хотя лучше сделай задание этого параметра select-ом и кнопку для создания или ссылку под селектом.
     
    Feonix89 нравится это.
  9. Feonix89

    Feonix89 Новичок

    С нами с:
    30 май 2018
    Сообщения:
    113
    Симпатии:
    2
    помоему я приблизительно понял, но еще не уверен, спасибо сейчас попробую
     
  10. Feonix89

    Feonix89 Новичок

    С нами с:
    30 май 2018
    Сообщения:
    113
    Симпатии:
    2
    @mkramer спасибо получилось