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

Insercion de datos desde un formulario

Estas en el tema de Insercion de datos desde un formulario en el foro de Frameworks JS en Foros del Web. Hola, estoy haciendo un formulario en el que se insertan los datos a través de javascript, mi código es el siguiente: JAVASCRIPT function nuevoAjax() { ...
  #1 (permalink)  
Antiguo 27/08/2008, 04:14
 
Fecha de Ingreso: marzo-2008
Mensajes: 6
Antigüedad: 16 años
Puntos: 0
Insercion de datos desde un formulario

Hola, estoy haciendo un formulario en el que se insertan los datos a través de javascript, mi código es el siguiente:
JAVASCRIPT
function nuevoAjax() {
var xmlhttp=false;
try {
// Creacion del objeto AJAX para navegadores no IE
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e) {
try {
// Creacion del objet AJAX para IE
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(E) {
if (!xmlhttp && typeof XMLHttpRequest!="undefined") xmlhttp=new XMLHttpRequest();
}
}
return xmlhttp;
}

function guardarCorreo(correo) {
ajax=nuevoAjax();
ajax.open("GET", "http://www.xxxx.com/guardarcorreo.php?correo=" + correo , true);
ajax.onreadystatechange=function(){
if (ajax.readyState==4){
document.getElementById('form2').innerHTML=ajax.re sponseText
document.getElementById('mostrar').style.display = "none"
document.getElementById('ocultar').style.display = "none"
}
}
ajax.send(null);
}

FORMULARIO
<form action="" method="post" id="peticion" name="form">
<input type="text" name="correo" size="15" value="Direcci&oacute;n de correo" onblur="if(this.value=='') this.value='Direcci&oacute;n de correo';" onfocus="if(this.value=='Direcci&oacute;n de correo') this.value='';"/><br />
<input type="submit" value="Enviar" onclick="guardarCorreo(document.form.correo.value) ; return false;" >
</form>

GUARDARCORREO.php
<?
Aqui guardaría la dirección y eso, pero de momento estoy de pruebas
echo $_GET['correo'];
?>

El tema es que se atranca al hacer el onclick en todos los navegadores menos en firefox que si funciona, que veis raro?
  #2 (permalink)  
Antiguo 27/08/2008, 05:59
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Insercion de datos desde un formulario

Para enviar un formulario, yo uso las dos siguientes funciones:

Código:
function enviarFormulario(url, formid, divid)
    {
        cargando(divid);
        var Formulario = document.getElementById(formid);
        var longitudFormulario = Formulario.elements.length;
        var cadenaFormulario = "";
        var sepCampos = "";
        var valor = "";
        for (var i=0; i < longitudFormulario; i++)
            {
                valor = Formulario.elements[i].value;
                valor = escape(valor);
                cadenaFormulario += sepCampos+Formulario.elements[i].name+'='+valor;
                sepCampos = "&";
            }
        var peticion = nuevoAjax();
        peticion.open("POST", url, true);
        peticion.onreadystatechange = function()
            {
                if (peticion.readyState == 4)
                    {
                        if (peticion.status == 200 && !peticion.error)
                            {
                                var obj = document.getElementById(divid);                                
                                txt=unescape(peticion.responseText);
                                obj.innerHTML = txt;
								$('#form-msg').css('display','block');
                            }
                        else
                            {
                                var obj = document.getElementById(divid);                                
                                obj.innerHTML = 'Se ha producido un error inesperado. Intentelo más tarde';
								$('#form-msg').css('display','block');
                            }
                    }
            }
        peticion.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=ISO-8859-1");
        peticion.send(cadenaFormulario);
        return false;
    }

function nuevoAjax() {
	if (window.XMLHttpRequest)
    { 
        // Si es Mozilla, Safari etc
        return new XMLHttpRequest ();
		//alert('Selected XMLHttpRequest');
		
    }
    else  if (window.ActiveXObject)
    {  	
        // pero si es IE
        try 
        {
            return new ActiveXObject ("Msxml2.XMLHTTP");
			//alert('Selected Msxml2.XMLHTTP');
        }
        catch (e)
        {
            // en caso que sea una versi&oacute;n antigua
            try
            {
                return new ActiveXObject ("Microsoft.XMLHTTP");
				//alert('Selected Microsoft.XMLHTTP');
            }
            catch (e)
            {
            }
        }
    } 
	else {
    return false;
	}
}
En tu código, no veo peticion.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=ISO-8859-1"); (creo que hace falta :D)
  #3 (permalink)  
Antiguo 27/08/2008, 09:04
 
Fecha de Ingreso: marzo-2008
Mensajes: 6
Antigüedad: 16 años
Puntos: 0
Respuesta: Insercion de datos desde un formulario

Esta chula tu función, con divid y cargando() también le añades un div para enseñar mientras se procesa? podrías ponerla también? Al final me estoy partiendo los cuernos con prototype, pero esto lo de cargando es justo lo que no consigo que funcione
  #4 (permalink)  
Antiguo 27/08/2008, 09:26
Avatar de foreverOdd  
Fecha de Ingreso: noviembre-2007
Ubicación: Caracas
Mensajes: 489
Antigüedad: 16 años, 5 meses
Puntos: 14
Respuesta: Insercion de datos desde un formulario

Hola

document.getElementById('form2').innerHTML=ajax.re sponseText

no veo ningun control con id = "form2"

tambien

ajax.open("GET", "http://www.xxxx.com/guardarcorreo.php?correo=" + correo , true);

mejor seria

ajax.open("GET", "guardarcorreo.php?correo=" + correo , true);

pero si aprendes con prototype la vida se te simplificara mas aun



var url = 'http://www.xxxx.com/guardarcorreo.php?correo=' + correo;
new Ajax.Request(url, {
method: 'get',
onSuccess: function(transport) { alert(transport.responseText)}
}
});
__________________
My path is lit by my own fire, I only go where I desire
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 12:53.