4
votes

Obtenez de la valeur du Javascript au HTML dans Laravel

Je veux demander comment puis-je appeler une valeur de javascript à lame html dans laravel.

Voici mon code JavaScript:

$users = User::all();
    $students = Students::all();
    return view('admin.assignStudent', compact('users','students'));

Voici mon Html Laravel:

<select id="teacherId" onchange="valueFunction()">
                        <option>Select Teacher</option>
                        @foreach($users as $user)
                        <option value="{{$user->id}}">{{$user->name}}</option>
                        @endforeach
                    </select>
{{$users[]->name}}
<output id="output"></output>

Code du contrôleur:

<script type="text/javascript">
    function valueFunction(){
        var output = document.getElementById('teacherId').value;
        console.log(output);
        document.getElementById('output').innerHTML = output;
    }
</script>

As J'obtiens la valeur dans la balise de sortie, mais je veux appeler la valeur de javascrpt dans {{$ users [output] -> name}} ici.

Merci.


5 commentaires

changez . à


Votre solution actuelle est la meilleure! Imprimer la valeur en mélangeant javascript et php est une mauvaise idée.


Je veux imprimer des détails sur l'utilisateur sélectionné, c'est pourquoi j'ai besoin d'un identifiant pour obtenir les données de la base de données


pouvez-vous montrer votre code de contrôleur? Merci


code contrôleur ajouté


4 Réponses :


2
votes

Dans laravel ou tout autre framework PHP, vous devez appeler la fonction de script java comme suit:

{{''}}


0 commentaires

0
votes

Laravel Html

<script type="text/javascript">
    var users = @json($users);
    function valueFunction(){
        var userId = document.getElementById('teacherId').value;
        var user = array.filter(function(arr){return arr.id == userId})[0];
        console.log(user);
        document.getElementById('output').innerHTML = user.name;
    }
</script>


7 commentaires

Merci pour votre réponse, mais je veux l'appeler de manière dynamique, comme suit: var sorties = document.getElementById ('teacherId'). Value; document.getElementById ('output'). innerHTML = '{{$ user [output] -> name}}'; mais je ne peux pas appeler la sortie dans '{{$ user [output] -> name }} ', il renvoie une erreur ** Utilisation de sorties constantes non définies **


Mon anglais n'est pas bon. Pouvez-vous décrire l'entrée et la sortie, le modèle?


Pas de problème, la sortie est la valeur du menu déroulant en html, le menu déroulant obtient les options de la boucle. donc je reçois la valeur sélectionnée en javascript et je veux envoyer la valeur au html pour imprimer la valeur en html.


Je veux vraiment vous aider, mais je ne comprends vraiment pas ce que vous voulez. Évitez de perdre votre temps, les autres peuvent mieux vous aider


va éditer mon code en question, cela peut vous aider à mieux le comprendre


Je comprends. 2 voies: 1> en utilisant l'API avec AJAX. 2> Créez un tableau javascript à partir de $ users. Je pense que si 2 manière puis plus facile


pouvez-vous me guider comment créer ce tableau car, j'obtiens une erreur lors de la création du tableau.



0
votes

Vous ne pouvez pas le faire directement, car JavaScript n'est exécuté que côté client sans interaction avec le fichier lame.

Une suggestion est de configurer une API dans Laravel, utilisez ajax , XMLHttpRequest ou fetch en JavaScript et POST (ou d'autres verbes HTTP) sur la route. Traitez et renvoyez les données dans Laravel. Enfin, affichez-le dans le DOM en utilisant JavaScript.

Ou si vous souhaitez que le modèle de lame utilise directement la valeur, vous pouvez utiliser un formulaire HTML pour publier sur Laravel, traiter les données, puis renvoyer la vue avec les données. Pour ce faire, l'utilisateur doit accéder à une autre page (ou à nouveau à la même page).


0 commentaires

0
votes

essayez ceci et voyez si cela fonctionne:

<script type="text/javascript">
    function valueFunction(){
        var output = document.getElementById('teacherId').value;
        console.log(output);


        var data = {!! $sites[output]->name() !!};
        document.getElementById('output').innerHTML = data ;
    }
</script>


1 commentaires

Merci d'avoir répondu, Testé cette erreur d'obtention: Utilisation d'une sortie constante non définie - supposée «sortie»