Chcesz uzyskać szczegóły z bazy danych w projekcie Lavel Według wyboru użytkownika, ponieważ utworzyło listę rozwijaną, skąd użytkownik wybiera dowolny identyfikator, który jest dalej wysyłany do JavaScript. Oto kod Lavel:

<div class="form-group">
    <label class="col-lg-2 col-sm-2 control-label">Select Teacher</label>
    <div class="col-lg-10">
        <select class="form-control  select2" name="teacher" id="teacher" onchange="teacherFunction()" required autofocus>
            <option value="null">Select Teacher</option>
                @foreach($users as $user)
                    <option value="{{$user->id}}">{{$user->name}}</option>
                @endforeach
        </select> 
        <p class="help-block"></p>
    </div>
</div> 

Pracuje się dobrze, a dane są wysyłane do funkcji skryptu Java:

Oto kod JavaScript:

function teacherFunction(){
   var output = document.getElementById('teacher').value;
   console.log(output);
   var test = Number(output);
   console.log();
   console.log(test);
   document.getElementById('output').innerHTML = '@foreach($users as $user) @if($user->id == '+1+') Test @endif @endforeach';
}

W tym momencie, gdy wyjście jest wysyłane przez INNERHTML, używam ID Twarde zakodowany swoją działającą dokładnie, gdy używam wartości wyjściowej, którą użytkownik wybrał, a jeśli stan nie działa. Próbowałem:

JSON.stringify()
JSON.parse()
parseINT()
Number()

Wszystkie te nie pracowały. Wszelkie rozwiązanie zostanie docenione.

1
Taimoor 26 luty 2019, 13:26

2 odpowiedzi

Najlepsza odpowiedź

Twój kod JavaScript powinien wyglądać poniżej, nie można wpisać walidacji w JavaScript, ponieważ wykonany kod serwera jest wykonany jako pierwszy.

function teacherFunction(){
   var output = document.getElementById('teacher').value;
   console.log(output);
   var test = Number(output);
   console.log();
   console.log(test);

   var data = {!! json_encode($users) !!};

   for(int x = 0; x < data.length; x++) {
     if(data[x].id == output) {
       document.getElementById('output').innerHTML = 'TEST';
     }
   }

}
1
Googlian 26 luty 2019, 10:37

PHP jest uruchomiona strona serwera, oznacza to, że JavaScript nie może wchodzić w interakcje z PHP bezpośrednio. Do czasu wykonania funkcji nie wygląda

document.getElementById('output').innerHTML = '@foreach($users as $user) @if($user->id == '+1+') Test @endif @endforeach';

Ale jak

document.getElementById('output').innerHTML = 'test';

Aby móc uzyskać dostęp do całej listy użytkowników i drukować tam informacje, możesz umieścić kolekcję w zmiennej JavaScript

let users = {{json_encode($users)}};

Innym sposobem jest użycie AJAX lub $.get();, aby odzyskać go z serwera po wybraniu

0
mrQubeMaster 26 luty 2019, 10:55