Buenas.

Tengo una aplicación una aplicación web hecha con ajax en la utilizo un grid que recoge los datos de una bd mysql, que a su vez recoge los datos de un formulario que sirve para agregar/actualizar datos de nuevos usuarios.

El problema es que cuando agrego un nuevo usuario desde el formulario este se almacena correctamente en la bd, pero el grid que utilizo no se recarga de forma automática como debería hacer al actualizarse la base de datos, sino que es necesario actualizar toda la página para que el nuevo registro se cargue en el grid.

Os muestro el código:

é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)

Código :

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


Código :

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");


gracias de antemano por vuestra ayuda