2
votes

Récupérer des données dans un formulaire via Ajax dans Laravel

Je crée un formulaire à saisie semi-automatique, dans lequel l'utilisateur n'entre que l'identifiant et toutes les informations relatives à cet identifiant viennent dans un autre champ. J'utilise ajax et Laravel 5.4. Les données arrivent en alerte mais comment je peux insérer des données dans les champs d'entrée d'un formulaire. Voici mon script:

[{"id":37,"card_name":"Maka Furniture Co.,Ltd ","trade_type":"Manufacturer","address":"Xinzhang development zones,Shengfang town,Hebei province.","fc":"121AC209","status":0,"created_at":"2018-10-10 10:02:27","user":"admin"}]

ceci est mon contrôleur:

public function VendorDetail(Request $request)
    {

    $id= $request->id;

      $data = DB::select(DB::raw("SELECT * from bp where id = '$id'"));
      echo json_encode($data);

    }

voici ma réponse console.log:

<script type="text/javascript">
 $('#submitid').on('click', function() {

    var vid = $( "#vid" ).val();
       //var id=$(this).data('id');

        $.ajax({
              url: '/inquiryVendor',
              type: "Get",
              data:{id:$("#vid").val()}, // the value of input having id vid
               success: function(response){ // What to do if we succeed

            alert(response); console.log(response);


        }
            });
    });
</script>

voici la capture d'écran de la réponse:

entrez la description de l'image ici

Toute aide serait très appréciable.


0 commentaires

4 Réponses :


0
votes

Dans vos autres champs, vous pouvez faire ce qui suit dans la méthode de réussite:

success: function(response) { 
  $('.input1').val(response.input1);
  $('.input2').val(response.input2);
  $('.label1').html(response.label1);
}

J'espère que cela vous serait utile.


0 commentaires

1
votes

Si vous voulez toutes les données en une seule entrée, vous pouvez utiliser ce

<script type="text/javascript">
 $('#submitid').on('click', function() {

    var vid = $( "#vid" ).val();
       //var id=$(this).data('id');

        $.ajax({
              url: '/inquiryVendor',
              type: "Get",
              dataType: 'json',//this will expect a json response
              data:{id:$("#vid").val()}, 
               success: function(response){ 
                    $("#inputfieldid1").val(response.id); 
                    $("#inputfieldid2").val(response.2ndcolumnName);
                    $("#inputfieldid").val(response.3rdcolumnName); 

        }
            });
    });
</script>

ou si vous le souhaitez sur un champ de saisie différent, vous pouvez faire comme ceci

<script type="text/javascript">
     $('#submitid').on('click', function() {

        var vid = $( "#vid" ).val();
           //var id=$(this).data('id');

            $.ajax({
                  url: '/inquiryVendor',
                  type: "Get",
                  dataType: 'json',//this will expect a json response
                  data:{id:$("#vid").val()}, 
                   success: function(response){ 
                        $("#inputfieldid").val(response);     
            }
                });
        });
    </script>


12 commentaires

en ajoutant dataType json, Comment je retournerai le résultat dans le contrôleur. en ce moment je reviens dans echo json_encode ($ data)


J'obtiens des valeurs en utilisant $ ("# inputfieldid"). Val (response); mais pas $ ("# inputfieldid1"). val (response.id);


monsieur j'ai donné $ ("# inputfieldid1"). val (response.id); ceci comme exemple mettez votre nom de colonne au lieu de .id dans val (response.id) ici


Oui, je sais que j'ai un identifiant de nom de colonne dans ma table


fournir votre capture d'écran de réponse aux données json


en ajoutant dataType: 'json', je n'obtiens rien


si vous ajoutez dataType: 'json', vous n'avez pas besoin d'analyser les données plus tard dans votre jquery après le succès


voir la capture d'écran ci-dessus


essayez cette réponse. [0] .id


non. Pouvez-vous me dire pourquoi lorsque j'ajoute le type de données json, il ne renvoie aucun résultat? Dois-je avoir besoin de modifier le contrôleur?


cela fonctionne: var data = JSON.parse (response); name = data [0] .card_name; $ ('# card_name'). val (name) comment puis-je me passer de données [0] ???


continuons cette discussion dans le chat .



0
votes

ajoutez une propriété d'ID unique à votre entrée comme ceci:

<script type="text/javascript">
 $('#submitid').on('click', function() {

    var vid = $( "#vid" ).val();
       //var id=$(this).data('id');

        $.ajax({
              url: '/inquiryVendor',
              type: "Get",
              data:{id:$("#vid").val()}, // the value of input having id vid
               success: function(response){ // What to do if we succeed
                $('#name').val(JSON.parse(response)[0].name); //<---- This line,

        }
            });
    });
</script>

Remplissez ensuite cette entrée avec le résultat ajax par ce code:

<input id="name" type="text">

Faites cela pour toute votre base de saisie logique.


0 commentaires

0
votes

Supposons que vous ayez des champs de saisie comme celui-ci dans votre formulaire

$vendor = DB::table('bp')->where('id', '.$id.')->first();
return response()->json($vendor);

Votre code ajax devrait être comme ceci et j'espère que vous obtenez les paramètres dans votre réponse JSON

<script type="text/javascript">
 $('#submitid').on('click', function() {

 var vid = $( "#vid" ).val();
   //var id=$(this).data('id');

    $.ajax({
          url: '/inquiryVendor',
          type: "Get",
          data:{id:$("#vid").val()}, // the value of input having id vid
           success: function(response){ // What to do if we succeed
            console.log(response)
           }
        });
});
</script>

Si cela ne peut pas vous aider, pourriez-vous s'il vous plaît faire console.log (réponse) et coller les données de débogage afin qu'il soit plus facile de vous aider davantage.

<script type="text/javascript">
 $('#submitid').on('click', function() {

 var vid = $( "#vid" ).val();
   //var id=$(this).data('id');

    $.ajax({
          url: '/inquiryVendor',
          type: "Get",
          data:{id:$("#vid").val()}, // the value of input having id vid
           success: function(response){ // What to do if we succeed
            $('#vendor_name').val(response.vendor_name)
            $('#vendor_mobile').val(response.vendor_mobile)
            $('#vendor_email').val(response.vendor_email) 
           }
        });
});
</script>

si vous ne voulez pas de réponse [0], vous devez changer le fichier de votre contrôleur comme ceci.

<input type="text" name="vendor_name" id="vendor_name">
<input type="text" name="vendor_mobile" id="vendor_mobile">
<input type="text" name="vendor_email" id="vendor_email">

Selon vos besoins, cela vous aidera à coup sûr.


4 commentaires

HI Vinod je l'ai fait mais pas de réponse. veuillez consulter la réponse de la console. J'ai édité la question


J'obtiens des valeurs en utilisant $ ("# inputfieldid"). Val (response); mais pas $ ("# inputfieldid1"). val (response.id);


Veuillez mettre à jour votre code dans ajax success comme ceci, cela pourrait vous aider. $ ('# card_name'). val (réponse [0] .card_name)


oui avec ça ça marche. Pouvez-vous me dire comment je peux faire cela sans [0] ??