Laravel y Ajax para obtener datos

publicado por: Anonymous

Espero explicarme lo mejor posible para que me deis una ayudita.:S

Tengo el siguiente código de JavaScript:

 $.ajax({
url: "{{ route('comprobar') }}",
method: 'get',
dataType: 'json',
success: function(respuesta) {
  console.log("información");

},
error: function() {
  console.log("No se ha podido obtener la información");
}});

Y los siguientes códigos corresponden a la ruta de Laravel y su controlador:

Route::get('comprobar',[
'as'=>'comprobar',
'uses'=> '[email protected]']);


function comprobar()
{
    $idUsuario = Auth::user()->id;
    $respuesta= DB::select("SELECT * FROM partidas WHERE idUsuario = " . $idUsuario );
    dd($respuesta);

    return Response::json(array());
}

El problema que me ocurre es que siempre entra en la parte de : No se ha podido obtener información y no se me ocurre cuál puede ser una solución ya que lo que quiero es extraer datos de la base de datos con Ajax para hacer un par de comprobaciones en un formulario con pasos(steps), añado también que me da un error por la consola del navegador : jquery.min.js:4 GET http://127.0.0.1:8000/comprobar 500 (Internal Server Error) . Muchas gracias por su tiempo.

He podido mejorar el código de javascript/jquery para que me devuelva true o false en caso de que no encuentre lo que necesito pero mi problema ahora radica en que esa función no me devuelve nada a la variable que le asigno.

_x000D_

_x000D_

 var nickPartida = document.getElementById('nickPartida').value;_x000D_
 var devuelta = comprobarNickPartida(nickPartida);_x000D_
 //aqui me duelve indefinido cuando en la función principal devuelve true_x000D_
 console.log(devuelta);_x000D_
_x000D_
function comprobarNickPartida(nickPartida)_x000D_
{     _x000D_
  var devolver = false;_x000D_
   $(document).ready(function(){_x000D_
      //Comprobación del nombre mediante Ajax_x000D_
      $.ajax({_x000D_
      url: "{{ route('comprobar') }}",_x000D_
      method: 'get',_x000D_
      dataType: 'json',_x000D_
      success: function(response) {_x000D_
        //Comprobar que el nick existe en el array o si el tamaño _x000D_
        //del array es mas de uno para decirle al usuario que ya existe_x000D_
       _x000D_
        for (let index = 0; index < response.length; index++) _x000D_
        { _x000D_
          if(response[index]['nickPartida'] == nickPartida)_x000D_
          {_x000D_
            devolver = true;_x000D_
          }_x000D_
        }_x000D_
        return devolver;_x000D_
      },_x000D_
      error: function() {_x000D_
        console.log("No se ha podido obtener la información");_x000D_
      }_x000D_
    });_x000D_
   })_x000D_
_x000D_
   return devolver;_x000D_
}

_x000D_

_x000D_

_x000D_

solución

Bueno después de dos días de lleno metido con el código para hacerlo con Ajax, he optado por hacerlo vía el controlador de Laravel y pasarlo a la vista y comprobarlo desde ahí. Os dejó el código para que lo podáis ver mas claramente.

 function index(){
    $idUsuario = Auth::user()->id;
    $response= DB::select("SELECT nickPartida FROM partidas WHERE idUsuario = " . $idUsuario );

    return view('crearpersonaje',compact('response'));
}

Desde ahí lo paso a la vista y trabajo con ella en la comprobación directamente :

<script> var arrayNombres = <?php echo(json_encode($response)); ?></script>
<script src="{{asset('js/propio.js')}}"></script>
<script>
 var inputNickPartida = document.getElementById('nickPartida');
 var existeNick = false;
 for (let index = 0; index < arrayNombres.length; index++) {
  if(arrayNombres[index]['nickPartida'] == inputNickPartida.value){
    console.log("existe");
    existeNick = true;
    document.getElementById('nickPartida').setAttribute('class',inputNickPartida.className + " invalid");
    }
  }
</script>

Gracias por la ayuda de todas formas y espero ayudar yo también en cualquier consulta que pueda atender.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *