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

Problema en llamada funcion ajax

Estas en el tema de Problema en llamada funcion ajax en el foro de Frameworks JS en Foros del Web. Saludos escribo por q no puedo ejecutar una llamada a la funcio ajax, para insertar unos elementos a la base de datos, aqui adjunto el ...
  #1 (permalink)  
Antiguo 24/11/2008, 21:33
 
Fecha de Ingreso: noviembre-2008
Mensajes: 38
Antigüedad: 16 años
Puntos: 0
Problema en llamada funcion ajax

Saludos

escribo por q no puedo ejecutar una llamada a la funcio ajax, para insertar unos elementos a la base de datos, aqui adjunto el codigo, y q me muestre la consulta en el <div id="resultado_proce">

el tema es q el formulario no me toma encuenta la llamada a la funcion ajax y cuando hago el submit me recarga la pagina y en la barra de navegacion me aparece lo siguiente:

http://localhost/prueba_ingreso_ajax/crear_presupuesto_proce.php?presuNum=36&id_selecci onado=1&nombre_seleccionado=Composi+Simple&costo_s eleccionado=14000&desc_seleccionado=mkiumumiu&Subm it=Grabar

y no me ingresa nada a la base de datos, es raro, sera por q hay funciones js en la pagina?

Código:
<html>
<head>
<title>Registro con AJAX</title>

<script language="JavaScript" type="text/javascript" src="ajax.js"></script>

</head>

<script language="javascript">

function cargarDatos(id) {
	
	celda1 = id;
	celda2 = document.getElementById('row'+id).cells[0].innerHTML;
	celda3 = document.getElementById('row'+id).cells[1].innerHTML;
	
			
	document.getElementById('id_seleccionado').value = celda1;
	document.getElementById('nombre_seleccionado').value = document.getElementById('row'+id).cells[0].innerHTML;
	document.getElementById('costo_seleccionado').value = document.getElementById('row'+id).cells[1].innerHTML;
	
	verElemento('1');
			
}

function verElemento(idElemento)
{
		if(idElemento.value=='1'){
        document.getElementById('procedimiento').style["display"] = "none"
        
        } else{
			document.getElementById('procedimiento').style["display"] = "block"
		}
}

</script>

<body>

<p>Presupuesto N° : </p> <?php echo $_GET['id'] ?>

<p>Rut : </p> <?php echo $_GET['rut'] ?>

<p>Nombre : </p> <?php echo $_GET['nombre_1'] ?>
<p>Apellido : </p> <?php echo $_GET['apellido'] ?>


<?php
include_once("cProcedimiento.php");
//consulta todos los procedimientos
$objprocedimiento = new cProcedimiento;
$consulta=$objprocedimiento->consultar();

?>

<table id="proce" style="border:1px solid #FF0000; color:#000099;width:400px;">
<thead>
<tr>
<th>Procedimiento</th>
<th>Costo</th>
<th></th>
</tr>
</thead>
<tbody>
<?php
	while($row=mysql_fetch_array($consulta)){?>
		<tr id="row<?php echo $row['PROCE_ID'] ?>">
			<td><?php echo $row['PROCE_NOMBRE'] ?></td>
			<td><?php echo $row['PROCE_COSTO'] ?></td>
			<td><a href="javascript:cargarDatos(<?php echo $row['PROCE_ID'] ?>)"><img src="imagenes/btn_enviar.jpg" alt="Siguiente formulario" width="100" height="30" border="0"/></a></td>
		</tr>
	<?php } ?>

</tbody>
</table>


<br/>

<div id="procedimiento" style="display:none" >
<?php echo $_GET['id'] ?>

<form id="nuevo_proce" name="nuevo_proce" onsubmit="enviarDatosProcedimiento(); return false">


<input type="hidden" name="presuNum" value="1" />

<input type="hidden" name="id_seleccionado" id="id_seleccionado" value=""/>
<input type="text" name="nombre_seleccionado" id="nombre_seleccionado" value=""/>
<input type="text" name="costo_seleccionado" id="costo_seleccionado" value="" readonly="readonly" />
<input type="text" name="desc_seleccionado" id="desc_seleccionado" value="" />


<p>
<label>
<input type="submit" name="Submit" value="Grabar" />
</label>
</p>

</form>
</div>


<div id="resultado_proce">


</div>


<p>Total
<label>
<input name="total" type="text" readonly="readonly" />
</label>
</p>
</body>
</html>


ajax.js donde esta la funcion q me llama a la accion para almacenarla en la base de datos
Código:
function objetoAjax(){
	var xmlhttp=false;
	try {
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
		   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (E) {
			xmlhttp = false;
  		}
	}

	if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
		xmlhttp = new XMLHttpRequest();
	}
	return xmlhttp;
}

function enviarDatosProcedimiento(){
  //donde se mostrará lo resultados
  divResultado = document.getElementById('resultado_proce');
  divResultado.innerHTML= '<img src="anim.gif">';
  //valores de las cajas de texto
  id=document.nuevo_proce.presuNum.value;
  id_proce=document.nuevo_proce.id_seleccionado.value;
  desc=document.nuevo_proce.desc_seleccionado.value;
  //instanciamos el objetoAjax
  ajax=objetoAjax();
  //uso del medoto POST
  //archivo que realizará la operacion
  //registro.php
  ajax.open("POST", "registroProcedimiento.php",true);
  ajax.onreadystatechange=function() {
  if (ajax.readyState==4) {
  //mostrar resultados en esta capa
  divResultado.innerHTML = ajax.responseText
  //llamar a funcion para limpiar los inputs
  
 
  ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  //enviando los valores
  ajax.send("presuNum="+id+"&id_seleccionado="+id_proce+"&desc_seleccionado="+desc)
}


La accion: registroProcedimiento
Código:
<?php

	include_once("cProcedimiento.php");
	
	$id=$_POST['presuNum'];
	$id_proce=$_POST['id_seleccionado'];
	$desc=$_POST['desc_seleccionado'];
	
	sleep(2);
	
	$objprocedimiento=new cProcedimiento;
		
		if ($objprocedimiento->crearProceAsociado($id,$id_proce,$desc)==true){
			echo "Registro grabado correctamente";
		
		}else{
			echo "Error de grabacion";
		
		}

	include('consulta_procedimiento.php');
	
	
?>

Y la consulta: consulta_Procedimiento
Código:
<?php
include_once("cProcedimiento.php");

$objprocedimiento=new cProcedimiento;

$lista= $objprocedimiento->consultarProceAsociado();

?>

<table style="border:1px solid #FF0000; color:#000099;width:400px;">
<tr style="background:#99CCCC;">
<td>Presupuesto</td>
<td>Procedimiento</td>
<td>Descripcion</td>
</tr>
<?php
	while($row=mysql_fetch_array($lista)){?>
		<tr>
			
			<td><?php echo $row['PRESU_ID'] ?></td>
			<td><?php echo $row['PROCE_ID'] ?></td>
			<td><?php echo $row['POSEE_DESCRIPCION'] ?></td>
		</tr>
	<?php } ?>

</table>
  #2 (permalink)  
Antiguo 24/11/2008, 23:26
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Respuesta: Problema en llamada funcion ajax

Hola:

No he descubierto el error, pero evidentemente el formulario hace submit, así que debes buscarlo en el método que se ejecuta antes del envío: "enviarDatosProcedimiento()"... el navegador suele indicar si hay error, en la línea que se encuentra (si usas opera u firefox consulta la consola de errores)...

Por cierto, una buena práctica para mejorar la accesibilidad, es que cuando el visitante tenga desactivado javascript, que se procese igual el formulario, así que puedes poner ese procesamiento en el mismo fichero, o usar un action que lo procese y luego redireccione la página ($_SERVER["HTTP_REFERRER"])

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 25/11/2008, 07:22
 
Fecha de Ingreso: noviembre-2008
Mensajes: 38
Antigüedad: 16 años
Puntos: 0
Respuesta: Problema en llamada funcion ajax

holas

pos ya solucione el problema, en la pagina ajax.js pues como tengo mas funciones ajax, lo que hice fue sacar la funcion q llamaba y ponerla en otra pagina con la llamada al objeto ajax y pues resulto :S


quizas sea por q habian muchas funciones no c

gracias :)

:)
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 00:21.