¿Puede un JSON complicarme tanto?

uncoderbyte Seguir

Gamma
Verificación en dos pasos desactivada
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
12 Nov 2020
Mensajes
179
Hola!, aquí mi cabeza pensado y pensando como puedo solucionar esto.
Tengo un autocomplete de MaterializeCSS en un formulario el cual tiene el siguiente código:
JavaScript:
 var autocomplete_elems = document.querySelectorAll('.autocomplete');
var autocomplete_instances = M.Autocomplete.init(autocomplete_elems, autocomplete_options = {
data: {
    "Microsoft": null,
    "Apple": null
}});

Por supuesto que quiero cambiarle las opciones. Las mismas están en una petición (la cual funciona correctamente) que trae los valores convertidos a JSON, pero no me doy cuenta como hacer para agregarlos a las opciones del Autocomplete.

La consulta fetch es:
JavaScript:
const req = await fetch("fetch.php", {
     header: "Content-type: application/json; charset=utf-8",
})
const data = await req.json();
let mydata = JSON.stringify(data);

Estuve literalmente Googleando todo el día y no encuentro manera. Estoy trabajando con JavaScript Vanilla.
 
Última edición:

J0ss

Beta
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
29 Ago 2014
Mensajes
63
const req = await fetch ("fetch.php" , {
header: "Content-type: application/json; charset=utf-8" ,
})
const data = await req. json();
let mydata = JSON .stringify (data);

autocomplete_instances = M.Autocomplete. init(autocomplete_elems, autocomplete_options = {
data: mydata});

No se si entendi bien
 

uncoderbyte

Gamma
Verificación en dos pasos desactivada
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
12 Nov 2020
Mensajes
179
const req = await fetch ("fetch.php" , {
header: "Content-type: application/json; charset=utf-8" ,
})
const data = await req. json();
let mydata = JSON .stringify (data);

autocomplete_instances = M.Autocomplete. init(autocomplete_elems, autocomplete_options = {
data: mydata});

No se si entendi bien

No funciona.

Eso lo tengo dentro de:

JavaScript:
const myfuncion = async () => {

}

Supongo que es porque no llamo myfunction, pero si lo hago tengo problema con el alcanze de las variables.
Así el código completo ahora:
JavaScript:
const myfuncion = async () => {
   const req = await fetch("fetch.php", {
  header: "Content-type: application/json; charset=utf-8",
})

  const data = await req.json();
  let mydata = JSON.stringify(data);
  let elems_autocomplete = document.querySelectorAll('.autocomplete');
  let instances = M.Autocomplete.init(elems_autocomplete, options);
}

myfuncion();

autocomplete_instances = M.Autocomplete.init(autocomplete_elems,
autocomplete_options = {
data: mydata
});
 

uncoderbyte

Gamma
Verificación en dos pasos desactivada
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
12 Nov 2020
Mensajes
179
const req = await fetch ("fetch.php" , {
header: "Content-type: application/json; charset=utf-8" ,
})
const data = await req. json();
let mydata = JSON .stringify (data);

autocomplete_instances = M.Autocomplete. init(autocomplete_elems, autocomplete_options = {
data: mydata});

No se si entendi bien

ACTUALIZO código:
JavaScript:
const myfuncion = async () => {
const req = await fetch("fetch.php", {
    header: "Content-type: application/json; charset=utf-8",
})
const data = await req.json();
const mydata = JSON.stringify(data);
 
console.log(mydata);
let elems_autocomplete = document.querySelectorAll('.autocomplete');
let instances = M.Autocomplete.init(elems_autocomplete, autocomplete_options = {
    data: mydata
});
}
myfuncion();

En el console.log funciona!, y el autocomplete me muestra símbolos raros, supongo que es porque me trae todos los campos de un único registro (lo cual se lo indico en la consulta SQL) y solo necesito el id.
Supongo ya estoy mas cerca. :D
 

J0ss

Beta
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
29 Ago 2014
Mensajes
63
const myfuncion = async () => {
const req = await fetch ("fetch.php" , {
header: "Content-type: application/json; charset=utf-8" ,
})
const data = await req. json();
let mydata = JSON. stringify (data);
let elems_autocomplete = document. querySelectorAll ( '.autocomplete' );
let options = { data : mydata };
let instances = M.Autocomplete. init(elems_autocomplete, options);
}
myfuncion ();
 

J0ss

Beta
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
29 Ago 2014
Mensajes
63
podrias poner aqui un ejemplo de los datos que recibes por fetch
 

uncoderbyte

Gamma
Verificación en dos pasos desactivada
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
12 Nov 2020
Mensajes
179
podrias poner aqui un ejemplo de los datos que recibes por fetch
Devuelve un registro de una BD con datos de una empresa (Nombre, dirección, teléfono, ciudad).

Ya casi lo tengo:
JavaScript:
const myfuncion = async () => {
const req = await fetch("/obtener-ci", {
    header: "Content-type: application/json; charset=utf-8",
})
const data = await req.json();
const mydata = JSON.stringify(data[0].nombre);
 
console.log(mydata);
let elems_autocomplete = document.querySelectorAll('.autocomplete');
let instances = M.Autocomplete.init(elems_autocomplete, autocomplete_options = {
  data: {
     "Test": mydata,
  },
});
}
            
myfuncion();

Cuando escribo "Test" en el autocomplete me sale correctamente el nombre de la empresa al registro que corresponde.
Ahora no hay problema porque solo necesito un registro (lo que comenté que le indicaba en la consulta SQL), ¿pero como tendría que hacer si necesito completar, por ejemplo "Test 1" y "Test 2"?
Se me ocurre un foreach pero no entiendo como podría hacerlo en este caso.
 

uncoderbyte

Gamma
Verificación en dos pasos desactivada
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
12 Nov 2020
Mensajes
179
Ya funcionó!, lo último era un error de sintaxis no mas!.
Muchas gracias :-D
 

Christianabreuh

Épsilon
Verificación en dos pasos desactivada
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
27 Jun 2019
Mensajes
798
Llego tarde, pero ya me di cuenta de la calidad de muchos de los programadores del FORO, no lo digo por el que abrio el tema si no por muchos que intentaron ayudarlo adivinando y no pensando y resolviendo el problema.
 

¡Regístrate y comienza a ganar!

Beneficios

  • Gana dinero por participar
  • Gana dinero por recomendarnos
  • Descubre ofertas de empleo diariamente
  • Negocios seguros
  • ¡Información premium y más!

Acceder

¿Ya tienes una cuenta? Accede aquí

Arriba