Acceder a API desde JS Javascript, asíncrono sincrono asincrono
//llamada a un api desde diapositiva, filtrado y ordenado
{"api":"WebVideos.listadoVideos", "where":"album='felicitaciones50'", "orden":"orden"}
//Si se quiere llamar a una funcion de php tradiciona, para pasar los parametros se usa var_0, var_1...
api( {"api":"WebPreguntasCoie.enviaPreguntas", "var_0":"hola"} ,function(json){ });
$().plugins("emergente", {
"margen": 0,
"api": {
"api": "OdsAmbitos.listaCompletaProyectos",
"carga_id": idAmbito,
"parametros":{
"ods": q.data("idObjetivo")
}
}
})
//Esta sección se irá completando poco a poco
Las llamadas a api, soportan:
* where
* carga_id
* var_parametro (siendo paramentro el nombre del parametro, se le agrega var_)
//ASIDE:
//por regla general en el inicia creamos una variable que apunta al quontrol
//para poder acceder a los métodos:
"inicia":function()
{
var quontrol = this.quontrol;
//...
//instanciamos un quontrol de tipo totalAplicaciones e insertamos el
//html retornado en el callback en un div
api( {"api":"SoporteAplicaciones.totalAplicaciones"} ,function(json){
quontrol.find(".panel_activo").html(json.resultado)
});
//podemos llamar a api pasando un carga_id
api( {"api":"WebDiapositivas.nuevaDiapositiva",
"carga_id": quontrol.data("q_carga_id")} ,
function(json){
console.log(json);
});
también puede ser que haya que cruzar relaciones, algo similar a lo que en php sería:
(Suponiendo que $this es instancia de Usuario)
/*
$s .= $this->PersonalLogrosUsuarios->mostrarLogros([
"_class" => "logrosConseguidos",
"mostrarSoloConseguidos" => 1,
"agruparPorTipo" => 0
]);
*/
api( {
"api": "Usuario.PersonalLogrosUsuarios.mostrarLogros",
"var_mostrarSoloConseguidos": this.quontrol.find(".cmbConseguidos").accion("valor").id == 1 ? 1 : 0,
"var_agruparPorTipo": this.quontrol.find(".cmbAgrupacion").accion("valor").id != 1 ? 1 : 0,
//La forma nueva permite poner este tipo de parametros dentro de un objeto parametros:{ agruparPorTipo:loquesea, ... }
"var__class" : "logrosConseguidos",
"where": "Usuario.id = " + this.quontrol.data("q_carga_id")
} ,function(json){
logros.replaceWith(json.resultado)
});
Si quisieramos simplemente hacer un carga del ultimo elemento de la cadena, sería con
"carga_id":this.quontrol.data("q_carga_id"),
//llamada sincrona:
api({"api":"invArticulosTipos.listaSql","var_filtro":filtros,"asincrona":false}).responseJSON.resultado;