Foros del Web » Programando para Internet » Javascript » Frameworks JS »

error catastrófico en aplicación ajax

Estas en el tema de error catastrófico en aplicación ajax en el foro de Frameworks JS en Foros del Web. El error en cuestión que aparece en el firebug es éste: this._pgn_parentObj is null [Break on this error] sfx = "_"+tmp;this.pagerElAr = new Arra...wsBuffer.length/this.rowsBufferOutSize)) Se ...

  #1 (permalink)  
Antiguo 26/05/2009, 10:02
 
Fecha de Ingreso: mayo-2009
Mensajes: 27
Antigüedad: 15 años, 7 meses
Puntos: 0
error catastrófico en aplicación ajax

El error en cuestión que aparece en el firebug es éste:

this._pgn_parentObj is null
[Break on this error] sfx = "_"+tmp;this.pagerElAr = new Arra...wsBuffer.length/this.rowsBufferOutSize))

Se produce en 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.

Cada vez que cargo la página en que estoy desarrollando dicha aplicación me aparece el error que os he puesto arriba.

por favor ¡¡¡¡¡¡¡¡¡¡que alguien me eche una mano!!!!!!!!!!!!!!!!
  #2 (permalink)  
Antiguo 26/05/2009, 10:05
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 8 meses
Puntos: 839
Respuesta: error catastrófico en aplicación ajax

Sin ver la página o por lo menos algo del código que estás usando es difícil precisar la causa del problema.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 26/05/2009, 10:41
 
Fecha de Ingreso: enero-2009
Mensajes: 455
Antigüedad: 15 años, 10 meses
Puntos: 11
Respuesta: error catastrófico en aplicación ajax

cual es el nombre delas librerias que utilizas??
  #4 (permalink)  
Antiguo 26/05/2009, 10:54
 
Fecha de Ingreso: mayo-2009
Mensajes: 27
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: error catastrófico en aplicación ajax

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

Última edición por bj4ever2009_foroweb; 29/05/2009 a las 01:50 Razón: -----edito porque había puesto la función que no era
  #5 (permalink)  
Antiguo 26/05/2009, 13:28
 
Fecha de Ingreso: enero-2009
Mensajes: 455
Antigüedad: 15 años, 10 meses
Puntos: 11
Respuesta: error catastrófico en aplicación ajax

ok, el grid que utilizas yo lo he utilizado y por lo que veo en este codigo que nos muestras

Cita:
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);
no veo ningun tipo de error, salvo errores de que el tipo de columna no sea el correcto cuando lo defines, es decir el coltypes, pero no creo que ese sea un error, si anteriormente te funcionaba y no modificaste esa parte, el error no es de ahi

por otra parte, en:

gridUsuarios.enableTooltips("true,true,true,true,f alse,false");

ahi hayun espacio en el false, prueba quitantolo, (pero el error tampoco creo que sea por eso)

finalmente, veo que utilizas tambien la libreria de dojo, pero no creo que cause conflictos con el dojo y el dhtmlxgrid, (hasta donde se)

ahora bien, revisando nuevamente el error que pusiste en tu primer post

this._pgn_parentObj is null

preguntaria lo siguiente:

en tu grid estas utilizando la paginacion del mismo??
me suena a que estas omitiendo agregar algun js que venga en la libreria, ya sea dentro de codebase o dentro de ext

suerte!
  #6 (permalink)  
Antiguo 27/05/2009, 01:33
 
Fecha de Ingreso: mayo-2009
Mensajes: 27
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: error catastrófico en aplicación ajax

eulerss, gracías por tu respuesta, lo de las librerías lo tengo que comprobar, pero tengo otro apartado de la aplicación que utiliza el mismo grid, y tengo las mismas librerías en ambos apartados.
  #7 (permalink)  
Antiguo 27/05/2009, 09:52
 
Fecha de Ingreso: enero-2009
Mensajes: 455
Antigüedad: 15 años, 10 meses
Puntos: 11
Respuesta: error catastrófico en aplicación ajax

ok, yo te recomendaria primero ir a la pagina de las librerias y bajarte la version mas nueva, si gustas yo tengo una version pro que te puedo pasar, una ves hecho eso, prueba quitando las librerias del dojo, quiza a la hora de mezclar o juntar el dojo con el dhtmlxgrid este causando algun tipo de conflicto

revisa tambien en la declaracion de tu grid si tienes algo como

mygrid.enablePaging(true,10,5,"pagingArea",false," infoArea");

es la funcion que te permite hacer la paginacion en el grid y que posiblemente en el archivo que utiliza "dhtmlxgrid_pgn.js" este marcando conflicto

saludos
  #8 (permalink)  
Antiguo 28/05/2009, 01:39
 
Fecha de Ingreso: mayo-2009
Mensajes: 27
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: error catastrófico en aplicación ajax

"revisa tambien en la declaracion de tu grid si tienes algo como
mygrid.enablePaging(true,10,5,"pagingArea",false," infoArea");"

pues tenías razón, el error es éste, muchisimas gracias, ya tengo localizado el error, ahora a ver cómo lo resuelvo
  #9 (permalink)  
Antiguo 28/05/2009, 12:27
 
Fecha de Ingreso: enero-2009
Mensajes: 455
Antigüedad: 15 años, 10 meses
Puntos: 11
Respuesta: error catastrófico en aplicación ajax

de primera instancia puedes probrar deshabilitando la paginacion del grid para que veas si se sigue reproduciendo el error
  #10 (permalink)  
Antiguo 29/05/2009, 01:37
 
Fecha de Ingreso: mayo-2009
Mensajes: 27
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: error catastrófico en aplicación ajax

El error ha desaparecido, y te agradezco la ayuda, el problema es que ahora, a puedo grabar lo que necesito en la base de datos, pero el grid no se actualiza.
  #11 (permalink)  
Antiguo 29/05/2009, 10:25
 
Fecha de Ingreso: enero-2009
Mensajes: 455
Antigüedad: 15 años, 10 meses
Puntos: 11
Respuesta: error catastrófico en aplicación ajax

podrias explicar mejor eso de la base? como actualizas tu base de datos, utilizas el dataprocessor del dhtmlxgrid? o haces la actualizacion directo a la base y despues quieres ver la actualizacion en el grid simplemente cargando la pagina o como???

saludos
  #12 (permalink)  
Antiguo 02/06/2009, 01:26
 
Fecha de Ingreso: mayo-2009
Mensajes: 27
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: error catastrófico en aplicación ajax

actualizo utilizando un script php que modifica la bd con una instrucción sql normal,
después el grid se debe actualizar mostrando los cambios realizados en la bd.
  #13 (permalink)  
Antiguo 04/06/2009, 10:25
 
Fecha de Ingreso: mayo-2009
Mensajes: 27
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: error catastrófico en aplicación ajax

Al pulsar en el botón guardar me sale el siguiente mensaje de error:
"Error: Bundle not found: common in dijit , locale=es-es";
después el grid no se actualiza a pesar de que el nuevo registro se almacena correctamente en la base de datos.
  #14 (permalink)  
Antiguo 04/06/2009, 10:26
 
Fecha de Ingreso: mayo-2009
Mensajes: 27
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: error catastrófico en aplicación ajax

Al pulsar en el botón guardar me sale el siguiente mensaje de error:
"Error: Bundle not found: common in dijit , locale=es-es";
después el grid no se actualiza a pesar de que el nuevo registro se almacena correctamente en la base de datos.


si me podéis ayudar, el código que utilizo lo está arriba
  #15 (permalink)  
Antiguo 09/06/2009, 08:09
 
Fecha de Ingreso: enero-2009
Mensajes: 455
Antigüedad: 15 años, 10 meses
Puntos: 11
Respuesta: error catastrófico en aplicación ajax

mm al parecer el problema que tienes ahora es con la libreria del dojo que ests utilizando, al momento de utilizar esta libreria debes de tener una carpeta que se llame dojo y otrs que se llame dijit si no me equivico, deja le doy una revisada al codigo que mostraste anteriormente y comento
  #16 (permalink)  
Antiguo 09/06/2009, 08:45
 
Fecha de Ingreso: mayo-2009
Mensajes: 27
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: error catastrófico en aplicación ajax

tengo ambas carpetas, así que no creo que sea ese el problema
  #17 (permalink)  
Antiguo 10/06/2009, 14:21
 
Fecha de Ingreso: enero-2009
Mensajes: 455
Antigüedad: 15 años, 10 meses
Puntos: 11
Respuesta: error catastrófico en aplicación ajax

el error que comentas como te dije anteriormente es del dojo, en el body de tu pagina no defines algo asi como" locale=es-es" ??? viendo tu codigo me surgue esta nueva duda

esto es correcto??

Código:
//Recargamos el grid....??????
gridUsuarios.clearAll();
//gridUsuarios.load("administracion/getGridBuscarUsuarios.php");
gridUsuarios.updateFromXML("administracion/getGridBuscarUsuarios.php");
no estoy seguro si el grid.updateFromXML existe lo que puedes usar el probando tu .php que te este generando correctamente el xml o en su defecto probar con la instruccion grid.Load para cargar el xml, si el problema no te refresca el xml o no te lo muestra, pienso que por ahi pudiera estar el problema, ademas seria de gran utilidad que pudieras poner un link en donde se viera el ejemplo corriendo como tal para tener una mejor perspectiva del problema que estas teniendo

saludos
  #18 (permalink)  
Antiguo 11/06/2009, 03:00
 
Fecha de Ingreso: mayo-2009
Mensajes: 27
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: error catastrófico en aplicación ajax

"no defines algo asi como 'locale=es-es' ???"
<script type="text/javascript" src='dojo/dojo/dojo.js' djConfig="parseOnLoad:true, isDebug:false, locale:'es'">></script>

si lo escribo como tú dices me salta un error en el firebug, a parte de saltar todos los mensajes de error que tengo en la aplicación.

lo del grid.updateFromXML existe, y de hecho en el otro grid que utiliza la aplicación funciona perfectamente con el mismo código que tu has citado, lo raro de esto es que utilizando el mismo código que en el otro grid y haciendo absolutamente lo mismo y el pu++++++ro grid sigue sin funcionar. tendré que avisar mulder.

lo del link veré lo que puedo hacer, porque sólo puedo trabajar en local hasta que la aplicación esté completa

de todas formas eulerss, muchas gracias por la ayuda que me estás prestando, y perdón por ser tan pesado
  #19 (permalink)  
Antiguo 11/06/2009, 09:37
 
Fecha de Ingreso: enero-2009
Mensajes: 455
Antigüedad: 15 años, 10 meses
Puntos: 11
Respuesta: error catastrófico en aplicación ajax

no hay de que

prueba quitando esta parte

djConfig="parseOnLoad:true, isDebug:false, locale:'es'"

entre las etiquetas de script que me comentas, y si existe el updatefrom XML del grid, no sabia , yo siempre he usado el grid.loadXML, lo que te recomiendo es que pruebes por separado tu XML que estas generando, tratara de verlo desde tu browser, si tu XML neceista algunos parametros para generarlos, pasalos sobre la url para uqe lo puedas ver, una ves que estes seguro de que tu xml funciona correctamente, y viendo el codigo que pusiste en un principio, creo que todo lo del gris funciona, porlo que entonces habria que pasar a la libreria del dojo, la cual he usado muy poco, pero veremos que se puede hacer

saludos
  #20 (permalink)  
Antiguo 11/06/2009, 10:46
 
Fecha de Ingreso: mayo-2009
Mensajes: 27
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: error catastrófico en aplicación ajax

nada que no hay forma el xml funciona correctamente en el navegador.
reitero lo de antes, esto es cosa de mulder y scully
  #21 (permalink)  
Antiguo 11/06/2009, 19:37
 
Fecha de Ingreso: enero-2009
Mensajes: 455
Antigüedad: 15 años, 10 meses
Puntos: 11
Respuesta: error catastrófico en aplicación ajax

jajajaja, quiza o quiza no, si el xml funciona correctamente es un gran paso, podrias replicar el sistema sin utilizar el dojo? o es muy complicado por el codigo?
  #22 (permalink)  
Antiguo 12/06/2009, 01:54
 
Fecha de Ingreso: mayo-2009
Mensajes: 27
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: error catastrófico en aplicación ajax

no entiendo a qué te refieres
  #23 (permalink)  
Antiguo 12/06/2009, 04:54
 
Fecha de Ingreso: mayo-2009
Mensajes: 27
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: error catastrófico en aplicación ajax

Eulerss, una cosita,acabo de hacer una pequeña trampa para comprobar una corazonada que he tenido.

Si Realmente falta algo o hay algún problema con las librerías o con cualquier otra cosa, debería verlo más exactitud si lograra recargar el grid, es decir, si lograba recargarlo, podría observar algún tipo de disfunción que me diera alguna pista sobre cual es el problema realmente,así que he pensado en copiar las siguientes líneas en la función encargada de mostrar el error.

Código:
gridUsuarios.clearAll();
//gridUsuarios.loadXML("administracion/getGridBuscarUsuarios.php");
		 gridUsuarios.updateFromXML("administracion/getGridBuscarUsuarios.php");
mi corazonada era acertada en parte, porque efectivamente, copiando estas líneas el grid se ha recargado, pero sin mayor incidencia que el mensajito de error, que sigue saliendo porque no me molesté en comentarlo.

pero vamos, si supuestamente se sigue produciendo el error,(o al menos se muestra el mensaje) pero basta con cambiar el código de sitio para que el grid se recargue correctamente, entonces no puede ser que se trate de un problema de las librerías aunque el mensaje de error me diga que no encuentra una.si se recarga sólo con eso es que encuentra la librería o el archivo dojo al que hace referencia y el mensajito de error de los huevos me está llevando por una dirección equivocada
  #24 (permalink)  
Antiguo 12/06/2009, 06:09
 
Fecha de Ingreso: mayo-2009
Mensajes: 27
Antigüedad: 15 años, 7 meses
Puntos: 0
De acuerdo Respuesta: error catastrófico en aplicación ajax

vale, localizado el error, el lio ese que he comentado en el comentario anterior me ha permitido localizar el error mediante una traza.

el mensaje de la traza es éste

Cita:
usuario n�mero: 0 <br />
<b>Warning</b>: mysql_free_result(): supplied argument is not a valid MySQL result resource in <b>H:\Archivos de programa\xampp\htdocs\clinica\include\mysql.php</b> on line <b>86</b><br />
que no se lo que significa pero bueno algo hemos avanzado
  #25 (permalink)  
Antiguo 12/06/2009, 09:31
 
Fecha de Ingreso: enero-2009
Mensajes: 455
Antigüedad: 15 años, 10 meses
Puntos: 11
Respuesta: error catastrófico en aplicación ajax

a catay, ahora si que ya me hice bolas, en realidad el error no era el que te decia del lenaguage=es-es etc etc el cual era provocado por el dojo??'

vayamos por pasos

1) si replicas el mismo codigo y te permite cargar el grid, estonces como bien dices no es por las librerias que estas utilizando, es en el codigo que usas en determinada parte de la página, hasta aqui estamos de acuerdo

2) lo que no me entendiste a que me referia era a lo sigueinte, en tu codigo supongo que tienes los include los scripts del dojo, es decir un dojo.js y diji.js y demas librerias, lo que te sugueria era quitar estas lineas y borar todo el codigo que uitliza las librerias del dojo para ver si desaparecia el problema y pudieras estar seguro de que el problema no era del grid, si no del dojo, ademas de tu confirmacion de que el xml formado, funciona correctamente.

3) estas lineas en que funcion las colocaste??
Código:
gridUsuarios.clearAll();
//gridUsuarios.loadXML("administracion/getGridBuscarUsuarios.php");
		 gridUsuarios.updateFromXML("administracion/getGridBuscarUsuarios.php");

4)
Código:
usuario n�mero: 0 <br />
<b>Warning</b>: mysql_free_result(): supplied argument is not a valid MySQL result resource in <b>H:\Archivos de programa\xampp\htdocs\clinica\include\mysql.php</b> on line <b>86</b><br />
en este mensaje que muestras me viene a tirar mi teoria, al parecer aparece porkq quiza estas realizando un quey erroneo, mmmm, podrias poner exactamente todo tu codigo de la pagina??????


bueno creo que este problema solo estamos tu y yo

pero bueno, se resolvera
  #26 (permalink)  
Antiguo 15/06/2009, 01:11
 
Fecha de Ingreso: mayo-2009
Mensajes: 27
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: error catastrófico en aplicación ajax

vamos al tema.

voy a poner los scripts de php que utilizo para comunicarme con la bd que es lo único que falta por poner, porque el resto de él código de ésta página ya está puesto.

en fin, éste es el contenido del script guardarDatosUsuario.php

Código:
<?php
include_once($_SERVER['DOCUMENT_ROOT'] . '/clinica/conf.php');

foreach($_COOKIE as $parametro => $valor)
	$$parametro=$valor;
foreach($_GET as $parametro => $valor)
	$$parametro=$valor;
foreach($_POST as $parametro => $valor)
	$$parametro=$valor;

if (!isset($_SESSION["autenticado"])) 
	$_SESSION["autenticado"] = false; 
if (!isset($_SESSION["IdUsuario"])) 
	$_SESSION["IdUsuario"] = -1; 

$txtLogin=eregi_replace("'","","$txtLogin");
$txtPassword=eregi_replace("'","","$txtPassword");



$IdUsuario=$_POST["txtIdUsuario"];
$login =$_POST["login"];
$password=$_POST["password"];
$nombre=$_POST["nombre"];
$apellidos=$_POST["apellidos"];
$mail=$_POST["mail"];
$dni=$_POST["dni"];
$movil=$_POST["movil"];
$fecha_alta=$_POST["fecha_alta"];
$fecha_baja=$_POST["fecha_baja"];
$permisos=asignarPermisos();
$identificador_area=$_POST["id_area"];

printf ("usuario número: %d         ",$IdUsuario);



//conecto con la base de datos
//llamo a la función bdConectar de mysql.php para conectarme a la base de datos que quiero
$conexion=bdConectar();



//cadena en la que almaceno la consulta sql que utilizo
//inicializo la variable consulta para no tener problemas con el ámbito


//bucle que realiza la consulta en función del parámetro que se le pasa
//deshabilitado hasta que consiga modificar las funciones de busqueda y hacer funcionar el grid
	if($txtOpc == 'alta'){
			
		//llamo a la función comprueba_login para comprobar que no se utiliza un login existente
			/*$comp_login=consultaLogin($login);

			if ($comp_login!="")
			{
				echo "Ese login ya existe";
			}
			else{*/

			
			$consulta="insert into usuarios (login,password,nombre,apellidos,email,dni,movil,fecha_alta,fecha_baja,permisos,id_area)values('".$login."','".$password."','".$nombre."','".$apellidos."','".$mail."','".$dni."','".$movil."','".$fecha_alta."','".$fecha_baja."','".$permisos."','".$identificador_area."')";
	
			//}		//fin alta	
	}
	elseif ($txtOpc == 'mod') {
	
		$consulta="UPDATE usuarios set login='".$login."', password='".$password."', nombre='".$nombre;
		$consulta=$consulta."', apellidos='".$apellidos."', email='".$mail."', dni='".$dni."', movil='".$movil."', fecha_alta=".$fecha_alta;
		$consulta=$consulta.", fecha_baja=".$fecha_baja.", permisos='".$permisos."', id_area='".$identificador_area."' WHERE id_usuario=".$IdUsuario;
printf ("consulta: %s   <br>\n      ",$consulta);
	}//fin modificación




//llamo a la función bdConsultar de mysql.php pasándo la cadena $consulta cómo parámetro
//almaceno el resultado en la variable $vconsulta
$vconsulta=bdConsultar($consulta);
bdLiberar($vconsulta);	
bdCerrar($conexion);


function asignarPermisos(){

	$cad_permisos="";
    $dir = $_POST["ch_direccion"];
    $admon = $_POST["ch_admon"];
	$cons= $_POST["ch_consultas"];
	$rec= $_POST["ch_rececion"];
	$pruebas= $_POST["ch_pruebas"];
	$ambulante= $_POST["ch_ambulante"];
	$estudiante= $_POST["ch_estudiante"];


$cad_permisos=$dir .$admon .$cons .$rec .$pruebas .$ambulante .$estudiante;
return $cad_permisos;
}

function consultaLogin($paramLogin){
	print " Estoy en consultalogin ";
	
	$log = "";
	
	$consulta = "SELECT login FROM usuarios WHERE login='".$paramLogin."'";

	$rs = bdConsultar($consulta);

	if($row = mysql_fetch_array($rs)){
		$log = $row['login'];
	}	

	bdLiberar($rs);	

	return $log;
}
?>
este script recibe por parámetro la variable $txtOpc. si el valor de esta variable es 'alta' el script debe realizar un insert para dar de alta un nuevo usuario, si es
'mod' deberá realizar un update para modificar los datos del usuario.

lo que nos interesa a nosotros es la opción de alta, puesto que el error aparece al dar de alta un nuevo usuario.

también te voy a poner el código de un script llamado 'Mysql.php' que es el script que utilizo siempre para hacer las consultas a la bd (así no tengo que hacer las funciones cada vez que haga una nueva página).

Código:
function bdConectar() {

	$conn = mysql_connect('localhost','usuario','contraseña') or die('Error de conexión : ' . mysql_error()); // DESARROLLO
	mysql_select_db('bdclinica') or die('Error de selección de BD'); // DESARROLLO
	mysql_query ("SET NAMES 'utf8'");
	//mysql_query ("SET NAMES 'ISO-8859-1'");
	return $conn;
}


function bdConsultar($sql) {
	$rs = mysql_query($sql) or die('La consulta fall&oacute;: ' . mysql_error());
	return $rs;
} 

function bdLiberar($rs) {
	// Liberar conjunto de resultados
	mysql_free_result($rs);
}
Ésto es lo que me falta, apart del xml, que no lo pondré en principio porque yo empiezo a pensar que el fallo está por aquí, (ojalá que esté)

bueno yo sigo peleandome con ésto, una vez más gracías por tu ayuda
  #27 (permalink)  
Antiguo 15/06/2009, 03:07
 
Fecha de Ingreso: mayo-2009
Mensajes: 27
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: error catastrófico en aplicación ajax

Código:
usuario n�mero: 0 <br />
<b>Warning</b>: mysql_free_result(): supplied argument is not a valid MySQL result resource in <b>H:\Archivos de programa\xampp\htdocs\clinica\include\mysql.php</b> on line <b>86</b><br />
ya he descubierto la causa de ese warning y lo he subsanado(no tenía que liberar nada de la bd al tratarse de un insert) pero el error sigue surgiendo, por lo que parece ser que no tiene nada que ver con ese warning

en fin posteo el XML a ver si hay mas suerte
Código:
<?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."%'";
		}
		else{
			$condicion = $condicion." AND id_usuario like '%".$txtIdUsuario."%'";
		}
	}
	
	
	if($txtLogin != ""){
		if($condicion == ""){
			$condicion = $condicion." WHERE login like '%".$txtLogin."%'";
		}
		else{
			$condicion = $condicion." AND login like '%".$txtLogin."%'";
		}
	}
	
		$consulta = $consulta.$condicion;
		




// HACE LA CONSULTA A LA BASE DE DATOS PARA COMPONER EL XML....
	
	$conn=bdConectar();

	$rsUsu = bdConsultar($consulta);

$id_usuario="";
$login ="";
$password="";
$nombre="";
$apellidos="";
$permisos="";

	$contador = 0;


	print("<rows>");   
	print("<head>");
	print("<beforeInit>"); 
    print("<call command='attachHeader'>"); 
    print("<param>#text_search,#text_search,#text_search,#text_filter,#text_filter,#text_filter,#cspan,#cspan</param>"); 
    print("</call>"); 
    print("</beforeInit>"); 
	print("</head>");

	while ($rowUsu = mysql_fetch_array($rsUsu)) {
		$contador = $contador + 1;
		$id_usuario=$rowUsu['id_usuario'];
		$login =$rowUsu['login'];
		$password=$rowUsu['password'];
		$nombre=$rowUsu['nombre'];
		$apellidos=$rowUsu['apellidos'];
		$permisos=$rowUsu['permisos'];






//el siguiente código es el que permite mostrar el contenido del grid
        print("<row id='".$id_usuario."'>");
            print("<cell>");
                print($id_usuario);
            print("</cell>");
            print("<cell>");
                print($login);
            print("</cell>");
			print("<cell>");
                print($password);
            print("</cell>");
            print("<cell>");
                print($nombre);   
            print("</cell>");
			print("<cell>");
                print($apellidos);   
            print("</cell>");
			print("<cell>");
                print($permisos);   
            print("</cell>");
			print("<cell><![CDATA[ <a href=\"javascript:editarUsuario('".$id_usuario."');\"><img src='comun/img/editar.gif' border=0></a> ]]></cell>");
			print("<cell><![CDATA[ <a href=\"javascript:borrarUsuario('".$id_usuario."');\"><img src='comun/img/eliminar.gif' border=0></a> ]]></cell>");
         print("</row>");
	}


	if($contador == 0){
		print("<row>");
        print("<cell></cell>"); 
        print("<cell></cell>");
        print("<cell></cell>");
		print("<cell></cell>");
		print("<cell></cell>");
		print("<cell></cell>");
		print("<cell></cell>");
		print("<cell></cell>");
		print("<cell></cell>");
		print("<cell></cell>");
		print("<cell></cell>");
		print("<cell></cell>");
        print("</row>");
		
	}

	print("</rows>");


	bdLiberar($rsUsu);

	bdCerrar($conn);


?>
Cita:
estas lineas en que funcion las colocaste??
Código:

gridUsuarios.clearAll();
//gridUsuarios.loadXML("administracion/getGridBuscarUsuarios.php");
gridUsuarios.updateFromXML("administracion/getGridBuscarUsuarios.php");
en ésta función

Código:
 error: function (error) {

				gridUsuarios.clearAll();
			     //gridUsuarios.loadXML("administracion/getGridBuscarUsuarios.php");
				gridUsuarios.updateFromXML("administracion/getGridBuscarUsuarios.php");
			//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: "Hospital Clínico Veterinario de Extremadura",
		        style: "width: 400px; height: 200px"
	        });

			mensaje.setContent("ERROR: Mensaje para el usuario<br>" + error);
			mensaje.show();
        }
  #28 (permalink)  
Antiguo 15/06/2009, 08:52
 
Fecha de Ingreso: enero-2009
Mensajes: 455
Antigüedad: 15 años, 10 meses
Puntos: 11
Respuesta: error catastrófico en aplicación ajax

ok, una ves visto tu codigo, vayamonos por partes

en la parte donde haces el alta de tu nuevo usuario, no veo (a simple vista y viendolo muy rapido algun error que salte a la vista), es decir, en guardarDatosUsuario.php y en 'Mysql.php'

ahora bien, las lineas
gridUsuarios.clearAll();
//gridUsuarios.loadXML("administracion/getGridBuscarUsuarios.php");
gridUsuarios.updateFromXML("administracion/getGridBuscarUsuarios.php");

no acabdo de comprnder porque las colocas en esa funcion, hasta donde alcanzo a entender esa funcion ol unico que te regresa es el mensaje de error de manera "bonita" puesto que estas utilizando el dojo en esa parte.

la duda que ahora me surge es la generación de tu XML, te dejo como ejemplo como es que yo genero los XML para ponerselos al grid y los toma sin problemas, aunque como bien dijiste anteriormente, tu xml esta bien formado, pero es algo que considero que es bueno probar, te dejo el ejemplo.

Código:
<?php
if ( stristr($_SERVER["HTTP_ACCEPT"],"application/xhtml+xml") ) 
   {
 		header("Content-type: application/xhtml+xml"); 
    } 
    else {
 		header("Content-type: text/xml");
    }
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");

function XXXXX() //funcion que me regresa los datos para formar el XML
{

....
}
// una ves que extraigo las variables que necesito para el xml, procedo a formarlo

echo "<rows>";
print("<row id='".$mas."'>");
echo "<cell title=\"$idORD\">".$idORD."</cell>";
echo "<cell title=\"$idPED\">".$idPED."</cell>";
echo "<cell><![CDATA[".$fchcap."]]></cell>";
echo "<cell><![CDATA[".$status."]]></cell>";
echo "<cell><![CDATA[".$tipo."]]></cell>";
echo "<cell><![CDATA[".$tot_bru."]]></cell>";	
echo "<cell><![CDATA[".$tot_net."]]></cell>";
if($notas==1){
echo "<cell>./images/no_existencia.gif</cell>";	
	        }
else {
echo "<cell>./images/null.png</cell>";	
	}
print ("</row>");
echo "</rows>";	
?>
prueba poniendole el mismoc encabezado que utilizo para generar tu xml ademas de ponerle los CDATA

saludos
  #29 (permalink)  
Antiguo 16/06/2009, 00:52
 
Fecha de Ingreso: mayo-2009
Mensajes: 27
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: error catastrófico en aplicación ajax

tampoco funciona, sigue igual,pero gracias
  #30 (permalink)  
Antiguo 16/06/2009, 08:43
 
Fecha de Ingreso: enero-2009
Mensajes: 455
Antigüedad: 15 años, 10 meses
Puntos: 11
Respuesta: error catastrófico en aplicación ajax

bueno, el siguiente paso es replicar tal cual el problema que tienes xD, pero necesitaria los archivos y librerias (versiones) que utilizas, ademas de la BD, que dices?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:09.