Ajax отправляет то же значение, но разные параметры в выпадающем списке - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть таблица данных пользователей, и я пытаюсь изменить их роль, заполняя роли из базы данных в базу данных.Я использую Ajax, чтобы изменить роль, и это работает.но проблема в том, что значение выбора опции из выпадающего списка не отправляется в базу данных.

При этом я прикрепил свой вид функции контроллера и код ajax.Пожалуйста, посоветуйте мне решить это.

Контроллер:

public function changeRole(Request $request){
    $id = Input::get('id');
    $isAdmin = Input::get('isAdmin');
    User::findOrFail($id)->update(['isAdmin'=>$isAdmin]);
}

Ajax:

$(document).ready(function(){
$('select').on('change' , function (event){
 id = $(this).data('id');
isAdmin = $('#role').val();
//alert(role);
$.ajax({
    type: 'POST',
    url: SITE_URL + '/changeRole/',

    data: {
        '_token': $('input[name=_token]').val(),
        'id': id,
        'isAdmin': isAdmin

    },
    cache: false,          
    success: function(data) {              
    toastr.success('Admin Role Successfully Changed ! ', 'Congratulations', {timeOut: 5000});
    //$('#example1').DataTable().ajax.reload();           
    },

    error: function (jqXHR, exception) {    
        console.log(jqXHR);
        toastr.error('Something Error !', 'Status not Changed!')
        },
    }); 
}); 
});

Просмотр:

<td>
    <form method="post">
     {{ csrf_field() }}
     <div class="form-group">                
         <select class="form-control" data-id="{{$user->id}}" id="role" name="role">
         <option value="0">Select a Role</option>
          @foreach ($roles as $role)
          <option @if($user->isAdmin==$role->id) selected @endif value="{{ $role->id }}">{{ $role->name }}</option>
          @endforeach
          </select>
       </div>  
    </form>          
  </td>

Пожалуйста, просмотрите пользовательский вид таблицы

1 Ответ

0 голосов
/ 22 ноября 2018

Прежде всего не используйте Input::get('id') используйте $request->id и $request->isAdmin

Попробуйте dd($request->all()) в самой первой строке вашего changeRole() метода и проверьте, правильно ли вы получаетезначения каждый раз.

Не используйте $('select'), дайте вашему select некоторый идентификатор и используйте его как $('#myselect')

добавьте var перед вашей переменной в jquery, например var id=$(), чтобы сохранитьэто в местном объеме.для справки нужно прочитать это: https://www.tutorialspoint.com/What-is-the-difference-between-global-and-local-Variables-in-JavaScript

Не используйте var id = $(this).data('id');, .data() иногда портит.

Используйте его как var id = $(this).attr('data-id');

Чтобы получить значение выбранных ролей, используйте следующее:

var isAdmin = $(this).children("option:selected").val();

Надеюсь, это исправит многие вещи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...