Error de recarga de un grid en aplicación ajax
Lo primero agradecerte por adelantado tu ayuda.
Mi problema es el siguiente, tengo una aplicación web, en la que yo debo hacer la parte de gestión de usuarios.
Esta parte consiste en un formulario que sirve para introducir nuevos usuarios para la aplicación, o modificar los datos de los usuarios existentes, y un grid que le muestra al administrador los datos de todos los usuarios registrados en la base de datos (la bd es phpMyAdmin 3.1.1).
El funcionamiento debe ser: el administrador introduce un nuevo usuario en la bd utilizando el formulario y el grid debería actualizarse mediante una conexión Asíncrona (o sea, que es una aplicación AJAX)
El problema en cuestión es que al introducir un nuevo usuario desde el formulario, me aparece el siguiente mensaje de error:
"Error: Bundle not found: common in dijit , locale=es-es";
He comprobado que la aplicación crea el nuevo usuario en la BD, pero el grid no se actualiza.
Te paso el código para que lo revises.
Ésta es la función javascript que utilizo para conectar con el servidor ajax (la URL está correcta, lo he comprobado un montón de veces)
function guardarDatosUsuario(opcion){
if(opcion == 1){ //ALTA
document.------.txtOpc.value = "alta";
}
else{ // MODIFICACION
document.------------.txtOpc.value = "mod";
}
dojo.xhrPost ({
// The page that parses the POST request
url: 'administracion/************.php',
// Name of the Form we want to submit
form: 'frmNuevoUsuario',
contentType: "application/x-www-form-urlencoded; charset=utf-8",
// Loads this function if everything went ok
load: function (data) {
//MENSAJE
var mensaje = new dijit.Dialog({
title: "..........",
style: "width: 400px; height: 200px"
});
//alert("D:" + data);
if(data == -1){ //ERROR. Se ha producido un error al modificar o dar de alta, así que doy un mensaje y no actualizo el tabbar
mensaje.setContent("ERROR: Mensaje para el usuario<br>Esta es la segunda linea");
}
else{
if(data == -2){ //ERROR. Ya existia un artículo con el mismo codigo...
mensaje.setContent("Ya existe en la base de datos un artículo con el mismo código.");
}
else{
//CORRECTO
//alert("D:" + data);
//Tengo que recoger el id del cliente que acaba de dar de alta.....
//document.frmCliente.txtIdCliente.value = idCliente;
document.-----------------.value = data;
//tabbar.forceLoad("d2",".........." + document.frmCliente.txtIdCliente.value);
//tabbar.setTabActive("d2");
//Actualizo el formulario ????????????????????
dojo.byId(".....").innerHTML = data;
editarUsuario(.......);
editarUsuario(data);
//Recarga el formulario frmNuevoUsuarios con los datos del articulos seleccionado
dojo.xhrGet({
url: ".........." + document.frmNuevoUsuario.txtIdUsuario.value,
// Loads this function if everything went ok
load: function (data) {
dojo.byId("---------------").innerHTML = data;
},
// Call this function if an error happened
error: function (error) {
//Pongo un mensaje indicando al usuario que ha habido un error....
//alert("Se produjo un error al dar de alta en la base de datos al nuevo cliente. " + error);
//MENSAJE
var mensaje = new dijit.Dialog({
title: "***********",
style: "width: 400px; height: 200px"
});
mensaje.setContent("ERROR: Se produjo un error al editar el artículo<br>" + error);
mensaje.show();
}
});
//creo que el programa no llega a pasar por aquí
//Recargamos el grid....??????
gridUsuarios.clearAll();
//gridUsuarios.load("administracion/getGridBuscarUsuarios.php");
gridUsuarios.updateFromXML("administracion/getGridBuscarUsuarios.php");
if(opcion == 1){ //ALTA
mensaje.setContent("El artículo se dió de alta correctamente en la base de datos.");
}
else{ //MODIFICACIÓN
mensaje.setContent("El artículo se modificó correctamente en la base de datos.");
}
}
}
mensaje.show();
},
// Call this function if an error happened
error: function (error) {
//Pongo un mensaje indicando al usuario que ha habido un error....
//alert("Se produjo un error al dar de alta en la base de datos al nuevo cliente. " + error);
//MENSAJE
var mensaje = new dijit.Dialog({
title: ,
style: "width: 400px; height: 200px"
});
mensaje.setContent("ERROR: Mensaje para el usuario<br>" + error);
mensaje.show();
}
});
}
</script>
este es el código del grid que utiliza la aplicación
gridUsuarios = new dhtmlXGridObject("articulos_grid");
gridUsuarios.setImagePath("componentes/dhtmlxGrid/codebase/imgs/");
gridUsuarios.setHeader("id_usuario,login,nombre,ap ellidos,email,dni,movil,fecha_alta,fecha_baja,perm isos,E, B");
//gridUsuarios.setInitWidths("90,200,90,90,25,25");
gridUsuarios.setInitWidths("30,50,60,70,40,40,50,2 0,20,30,25,25");
gridUsuarios.setColTypes("ro,ro,ro,ro,ro,ro,ro,ro, ro,ro,ro,ro");
gridUsuarios.setColAlign("center,left,left,left,le ft,left,left,left,left,left,center,center");
gridUsuarios.setSkin("light");
//forma en la que buscará en los distintos campos
gridUsuarios.attachHeader("#text_search,#text_filt er,#text_filter,#text_filter,#select_filter,#cspan ,#cspan,#cspan");
//gridUsuarios.attachHeader("#text_search,#text_filt er,,#text_filter,#cspan,#cspan,#cspan");
//gridUsuarios.attachHeader("#text_search,#text_filt er,,#combo_filter,#cspan,#cspan,#cspan");
gridUsuarios.setColSorting("connector,str,str,str, str,str,str,str,str,str,img,img");
//gridUsuarios.enableSmartRendering(true);
//disable tooltips for first column
gridUsuarios.enableTooltips("true,true,true,true,f alse,false");
Éste es el XML del grid, que está en un archivo a parte, (el grid se carga desde un principio con todos los datos disponibles en la bd, pero no sé si produzca algún problema al actualizar):
<?php
include ('../conf.php');
header("Content-type:text/xml");
print("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>");
function error($numero,$texto){
$ddf = fopen('error.log','a');
fwrite($ddf,"[".date("r")."] Error $numero: $texto /r/n");
fclose($ddf);
}
$consulta = "";
$condicion = "";
foreach($_POST as $parametro => $valor) $$parametro=$valor;
foreach($_GET as $parametro => $valor) $$parametro=$valor;
$consulta = $consulta."SELECT id_usuario,login,password,nombre,apellidos,permisos FROM usuarios";
if($txtIdUsuario != ""){
if($condicion == ""){
$condicion = $condicion." WHERE id_usuario like '%".$txtIdUsuario."%'";
...
Mi problema es el siguiente, tengo una aplicación web, en la que yo debo hacer la parte de gestión de usuarios.
Esta parte consiste en un formulario que sirve para introducir nuevos usuarios para la aplicación, o modificar los datos de los usuarios existentes, y un grid que le muestra al administrador los datos de todos los usuarios registrados en la base de datos (la bd es phpMyAdmin 3.1.1).
El funcionamiento debe ser: el administrador introduce un nuevo usuario en la bd utilizando el formulario y el grid debería actualizarse mediante una conexión Asíncrona (o sea, que es una aplicación AJAX)
El problema en cuestión es que al introducir un nuevo usuario desde el formulario, me aparece el siguiente mensaje de error:
"Error: Bundle not found: common in dijit , locale=es-es";
He comprobado que la aplicación crea el nuevo usuario en la BD, pero el grid no se actualiza.
Te paso el código para que lo revises.
Ésta es la función javascript que utilizo para conectar con el servidor ajax (la URL está correcta, lo he comprobado un montón de veces)
function guardarDatosUsuario(opcion){
if(opcion == 1){ //ALTA
document.------.txtOpc.value = "alta";
}
else{ // MODIFICACION
document.------------.txtOpc.value = "mod";
}
dojo.xhrPost ({
// The page that parses the POST request
url: 'administracion/************.php',
// Name of the Form we want to submit
form: 'frmNuevoUsuario',
contentType: "application/x-www-form-urlencoded; charset=utf-8",
// Loads this function if everything went ok
load: function (data) {
//MENSAJE
var mensaje = new dijit.Dialog({
title: "..........",
style: "width: 400px; height: 200px"
});
//alert("D:" + data);
if(data == -1){ //ERROR. Se ha producido un error al modificar o dar de alta, así que doy un mensaje y no actualizo el tabbar
mensaje.setContent("ERROR: Mensaje para el usuario<br>Esta es la segunda linea");
}
else{
if(data == -2){ //ERROR. Ya existia un artículo con el mismo codigo...
mensaje.setContent("Ya existe en la base de datos un artículo con el mismo código.");
}
else{
//CORRECTO
//alert("D:" + data);
//Tengo que recoger el id del cliente que acaba de dar de alta.....
//document.frmCliente.txtIdCliente.value = idCliente;
document.-----------------.value = data;
//tabbar.forceLoad("d2",".........." + document.frmCliente.txtIdCliente.value);
//tabbar.setTabActive("d2");
//Actualizo el formulario ????????????????????
dojo.byId(".....").innerHTML = data;
editarUsuario(.......);
editarUsuario(data);
//Recarga el formulario frmNuevoUsuarios con los datos del articulos seleccionado
dojo.xhrGet({
url: ".........." + document.frmNuevoUsuario.txtIdUsuario.value,
// Loads this function if everything went ok
load: function (data) {
dojo.byId("---------------").innerHTML = data;
},
// Call this function if an error happened
error: function (error) {
//Pongo un mensaje indicando al usuario que ha habido un error....
//alert("Se produjo un error al dar de alta en la base de datos al nuevo cliente. " + error);
//MENSAJE
var mensaje = new dijit.Dialog({
title: "***********",
style: "width: 400px; height: 200px"
});
mensaje.setContent("ERROR: Se produjo un error al editar el artículo<br>" + error);
mensaje.show();
}
});
//creo que el programa no llega a pasar por aquí
//Recargamos el grid....??????
gridUsuarios.clearAll();
//gridUsuarios.load("administracion/getGridBuscarUsuarios.php");
gridUsuarios.updateFromXML("administracion/getGridBuscarUsuarios.php");
if(opcion == 1){ //ALTA
mensaje.setContent("El artículo se dió de alta correctamente en la base de datos.");
}
else{ //MODIFICACIÓN
mensaje.setContent("El artículo se modificó correctamente en la base de datos.");
}
}
}
mensaje.show();
},
// Call this function if an error happened
error: function (error) {
//Pongo un mensaje indicando al usuario que ha habido un error....
//alert("Se produjo un error al dar de alta en la base de datos al nuevo cliente. " + error);
//MENSAJE
var mensaje = new dijit.Dialog({
title: ,
style: "width: 400px; height: 200px"
});
mensaje.setContent("ERROR: Mensaje para el usuario<br>" + error);
mensaje.show();
}
});
}
</script>
este es el código del grid que utiliza la aplicación
gridUsuarios = new dhtmlXGridObject("articulos_grid");
gridUsuarios.setImagePath("componentes/dhtmlxGrid/codebase/imgs/");
gridUsuarios.setHeader("id_usuario,login,nombre,ap ellidos,email,dni,movil,fecha_alta,fecha_baja,perm isos,E, B");
//gridUsuarios.setInitWidths("90,200,90,90,25,25");
gridUsuarios.setInitWidths("30,50,60,70,40,40,50,2 0,20,30,25,25");
gridUsuarios.setColTypes("ro,ro,ro,ro,ro,ro,ro,ro, ro,ro,ro,ro");
gridUsuarios.setColAlign("center,left,left,left,le ft,left,left,left,left,left,center,center");
gridUsuarios.setSkin("light");
//forma en la que buscará en los distintos campos
gridUsuarios.attachHeader("#text_search,#text_filt er,#text_filter,#text_filter,#select_filter,#cspan ,#cspan,#cspan");
//gridUsuarios.attachHeader("#text_search,#text_filt er,,#text_filter,#cspan,#cspan,#cspan");
//gridUsuarios.attachHeader("#text_search,#text_filt er,,#combo_filter,#cspan,#cspan,#cspan");
gridUsuarios.setColSorting("connector,str,str,str, str,str,str,str,str,str,img,img");
//gridUsuarios.enableSmartRendering(true);
//disable tooltips for first column
gridUsuarios.enableTooltips("true,true,true,true,f alse,false");
Éste es el XML del grid, que está en un archivo a parte, (el grid se carga desde un principio con todos los datos disponibles en la bd, pero no sé si produzca algún problema al actualizar):
<?php
include ('../conf.php');
header("Content-type:text/xml");
print("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>");
function error($numero,$texto){
$ddf = fopen('error.log','a');
fwrite($ddf,"[".date("r")."] Error $numero: $texto /r/n");
fclose($ddf);
}
$consulta = "";
$condicion = "";
foreach($_POST as $parametro => $valor) $$parametro=$valor;
foreach($_GET as $parametro => $valor) $$parametro=$valor;
$consulta = $consulta."SELECT id_usuario,login,password,nombre,apellidos,permisos FROM usuarios";
if($txtIdUsuario != ""){
if($condicion == ""){
$condicion = $condicion." WHERE id_usuario like '%".$txtIdUsuario."%'";
...
1 respuesta
Respuesta de apolinux