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

Enviar valor de un form a través de una URL con un script

Estas en el tema de Enviar valor de un form a través de una URL con un script en el foro de Frameworks JS en Foros del Web. Algo estoy haciendo mal al enviar los datos en la URL, os pido ayuda ya que estoy muy verde en javascript. Mi intención es recogerlos ...
  #1 (permalink)  
Antiguo 17/10/2012, 06:18
valago
Invitado
 
Mensajes: n/a
Puntos:
Enviar valor de un form a través de una URL con un script

Algo estoy haciendo mal al enviar los datos en la URL, os pido ayuda ya que estoy muy verde en javascript. Mi intención es recogerlos en un pop up y mandarlos a otra pagina que actualiza la base de datos

ESTO ES EL SCRIPT PARA INTRODUCIR LOS DATOS DESDE UNA VENTANA MODAL

Código:
<script>
$(function() {
    var name = $( "#name" ),
        email = $( "#email" ),
        password = $( "#password" ),
        allFields = $( [] ).add( name ).add( email ).add( password );
		
		
    $( "#dialog-form" ).dialog({
        autoOpen: false,
        height: 300,
        width: 350,
        modal: true,
        buttons: {
            "Create an account": function() {+
									
                    $( "#users tbody" ).append( "<tr>" +
                        "<td>" + name.val() + "</td>" +
                        "<td>" + email.val() + "</td>" +
                        "<td>" + password.val() + "</td>" +
                    "</tr>" );
AQUÍ INTENTO MANDAR EL EMAIL A TRAVÉS DE UNA URL. 				
window.location="upload.php?email=#email"
                    $( this ).dialog( "close" );
					
            },
            Cancel: function() {
                $( this ).dialog( "close" );
            }
        },
        close: function() {
            allFields.val( "" ).removeClass( "ui-state-error" );
        }
		
    });

    $( "#create-user" )
        .button()
        .click(function() {
            $( "#dialog-form" ).dialog( "open" );
        });
});
</script>

ESTO VA EN EL BODY, EL FORMULARIO Y UNA TABLA DONDE COMPRUEBA QUE SE HA INSERTADO BIEN EN EL FORMULARIO. ESTA TABLA DESAPARECERA CUANDO HAGA BIEN LA INSERCION EN LA BASE DE DATOS

Código:
<div id="dialog-form" title="Create new user">
    <p class="validateTips">All form fields are required.</p>
 
    <form>
    <fieldset>
        <label for="name">Name</label>
        <input type="text" name="name" id="name" class="text ui-widget-content ui-corner-all" />
        <label for="email">Email</label>
        <input type="text" name="email" id="email" value="" class="text ui-widget-content ui-corner-all" />
        <label for="password">Password</label>
        <input type="password" name="password" id="password" value="" class="text ui-widget-content ui-corner-all" />
    </fieldset>
    </form>
    
</div>
 
 
<div id="users-contain" class="ui-widget">
    <h1>Existing Users:</h1>
    <table id="users" class="ui-widget ui-widget-content">
        <thead>
            <tr class="ui-widget-header ">
                <th>Name</th>
                <th>Email</th>
                <th>Password</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>Jose</td>
                <td>[email protected]</td>
                <td>1234</td>
            </tr>
        </tbody>
    </table>
</div>

<button id="create-user">Create new user</button>



CON ESTE CÓDIGO INTENTO RECOGER EL VALOR EN UPLOAD.PHP QUE ES DONDE SE VAN A CARGAR LOS DATOS EN LA BASE DE DATOS

Código:
$email=$_GET['email'];
print ("probando a ver:   : ".$email );
He probado muchas cosas, pero no doy con una solución.
  #2 (permalink)  
Antiguo 17/10/2012, 08:06
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Enviar valor de un form a través de una URL con un script

bienvenido al foro, le recomiendo consultar las políticas, no se debe abusar de las mayúsculas

lo que necesita es concatenar el contenido de #email, recuerde que sólo jQuery es el que interpreta el # y en dicha linea no lo usa como debe:

Código Javascript:
Ver original
  1. window.location="upload.php?email=" + encodeURIComponent($('#email').val());

además, creo que debe estar claro para que se usa encodeURIComponent:

http://www.w3schools.com/jsref/jsref...icomponent.asp
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 17/10/2012, 09:42
valago
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Enviar valor de un form a través de una URL con un script

Muchas gracias maycolalvarez por tu respuesta. Funciona de maravilla.
Le había dado muchas vueltas, que malo es no saber de algo. jejej

Estaré atento al foro para cualquier cosa que pueda solucionar.

Un placer.
  #4 (permalink)  
Antiguo 17/10/2012, 10:19
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Enviar valor de un form a través de una URL con un script

bueno en ese caso lo mejor es devorar los manuales, y he aquí las mejores delicias que no te puedes perder: http://librosweb.es/ (solo ignora los manuales de Symfony, ya que son de una versión vieja )

recuerda que no está mal usar jQuery, lo malo es usarlo sin tener conciencia de como realmente funcionan las cosas, como el DOM por ejemplo, mucha suerte
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #5 (permalink)  
Antiguo 17/10/2012, 10:24
valago
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Enviar valor de un form a través de una URL con un script

Me han surgido un par de espero que pequeñas dudas al implementarlo, funciona bien al mandar solo una variable, pero al intentar mandar dos variables me devuelve un error de que la página no existe en el servidor.

Código Javascript:
Ver original
  1. window.location="upload.php?email=" + encodeURIComponent($('#comment').val())&"photo=" + encodeURIComponent($('#photo').val());

No se donde puede esta el error o si es, que no se puede implementar así y hay que mandar un array o algo. Mirando por internet he visto que la sintaxis era así.

Y el segundo error es que he probado mandando solo una variable "la ruta de la foto", pero no me coge la ruta entera si no el nombre del archivo. ¿Alguna idea de porque ocurre esto?

Código Javascript:
Ver original
  1. $(function() {
  2.     var comment = $( "#comment" ),
  3.           photo = $( "#photo" );
  4.        
  5.        
  6.     $( "#dialog-form" ).dialog({
  7.         autoOpen: false,
  8.         height: 300,
  9.         width: 350,
  10.         modal: true,
  11.         buttons: {
  12.             "Create an account": function() {+                                 
  13.                     $( "#users tbody" ).append( "<tr>" +
  14.                         "<td>" + comment.val() + "</td>" +
  15.                         "<td>" + photo.val() + "</td>" +
  16.                     "</tr>" );
  17.                     window.location="upload.php?photo=" + encodeURIComponent($('#photo').val());
  18.                     $( this ).dialog( "close" );
  19.                     //comment=" + encodeURIComponent($('#comment').val())&"
  20.             },
  21.             Cancel: function() {
  22.                 $( this ).dialog( "close" );
  23.             }
  24.            
  25.         },
  26.         close: function() {
  27.             allFields.val( "" ).removeClass( "ui-state-error" );
  28.         }
  29.        
  30.     });
  31.  
  32.     $( "#create-user" )
  33.         .button()
  34.         .click(function() {
  35.             $( "#dialog-form" ).dialog( "open" );
  36.         });
  37. });
  38. </script>


Y este sería el formulario:

Código PHP:
Ver original
  1. <form>
  2.     <fieldset>  
  3.         <TEXTAREA name="comment" id="comment" ROWS=2 COLS=40></TEXTAREA>
  4.         <input type="file" name="photo" id="photo" class="inMen" value="Photo/Video" size="35"/>
  5.     </fieldset>
  6.     </form>

Por eso recurro otra vez a vuestros conocimientos. Gracias de nuevo.

Última edición por valago; 17/10/2012 a las 10:52
  #6 (permalink)  
Antiguo 17/10/2012, 13:12
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Enviar valor de un form a través de una URL con un script

en javascript concatenas con +, en la url con el &, lo tienes mal, otra vez:

Código Javascript:
Ver original
  1. window.location="upload.php?email=" + encodeURIComponent($('#comment').val()) + "&photo=" + encodeURIComponent($('#photo').val());

por otro lado un input file no te devuelve la ruta del archivo, eso por motivos de seguridad Javascript NO tiene acceso al IO
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #7 (permalink)  
Antiguo 18/10/2012, 03:00
valago
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Enviar valor de un form a través de una URL con un script

Muchas gracias de nuevo, maycolalvarez. Estoy obcecado con php no me habia dado cuenta.

He estado mirando lo del input file y la solución que he visto es subirlo directamente desde el modulo en javascript al servidor y ahí tratarlo.

Aunque mi primera idea era mandarlo a upload.php y gestionarlo desde ahí que ya lo tengo hecho. Por lo tanto, como ya he comentado,que estoy aprendiendo javascript ahora, te ruego si se te ocurre alguna solución a mi problema si necesidad de modificar mucho mi codigo.

Muchas gracias otra vez. un saludo.

Esto es el modulo para cargar la foto.
Código PHP:
Ver original
  1. $uploadedfileload="true";
  2. $uploadedfile_size=$_FILES['photo'][size];
  3. //echo $_FILES[photo][name];
  4. if ($_FILES[photo][size]>5000000)
  5. {
  6.     $msg=$msg."El archivo es mayor que 5MB, debes reducirlo antes de subirlo<BR>";
  7.     $uploadedfileload="false";
  8. }
  9.  
  10. if (!($_FILES[photo][type] =="image/jpg" OR $_FILES[photo][type] =="image/bmp" OR $_FILES[photo][type] =="image/png"))
  11. {
  12.     $msg=$msg." <BR>Tu archivo tiene que ser JPG o GIF o PNG. Otros archivos no son permitidos<BR>";
  13.     $uploadedfileload="false";
  14. }
  15.  
  16. $file_name=$_FILES[photo][name];
  17. $add="users/".$_SESSION['code']."/$file_name";
  18. //print ("ruta:".$add);
  19. if($uploadedfileload=="true")
  20. {
  21.     if(move_uploaded_file ($_FILES[photo][tmp_name], $add))
  22.     {
  23.         echo "Ha sido subido satisfactoriamente";
  24.         echo "<img src='users/$file_name' >";
  25.     }
  26.     else
  27.     {
  28.         echo "Error al subir el archivo";}
  29.  
  30.     }
  31. else
  32. {
  33.     echo $msg;
  34. }
  #8 (permalink)  
Antiguo 18/10/2012, 07:17
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Enviar valor de un form a través de una URL con un script

espero tengas claro que no puedes subir un archivo con javascript, y mucho menos por GET (URL), para ello tienes que usar un <form> con POST y el enctype adecuado para subir el archivo

de todas formas si el input file te devolviese la ruta completa (caso hipotético) sería la ruta del archivo en el cliente, NO en el servidor, claro si lo puebas en tu localhost funciona (¡porque es el mismo equipo!), pero con un cliente real externo NO podrías acceder al archivo, NO tendrías el archivo.

una solución claro está es usar el form, y que dicho link haga el submit (puedes enviar el POST con la imágen y los parámetros GET a la vez, concatenandolos al ACTION del form ), otra un iframe oculto y que el form se envíe primero con la imágen, pero 2 peticiones no valen la pena.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #9 (permalink)  
Antiguo 18/10/2012, 09:47
valago
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Enviar valor de un form a través de una URL con un script

Hola de nuevo, el porque no uso el form para enviarlo, que por cierto si funciona, ya lo hice antes. Es porque necesito que al usuario le aparezca el formulario para ingresar la imagen desde una ventana modal o pop up.

Por eso utilizé el script para mostrar el form.
Estoy intentando hacerlo con un iframe oculto. ¿Crees que es la mejor opción para lo que quiero hacer?. Me imagíno que como todo habrá formas mas sencillas de conseguir mostrar el formulario en una ventana modal y que desde ahí se mande la ruta de la imágen a upload.php que es quien subiría la imágen.

Muchas gracias de nuevo por tu atención y paciencia. Un saludo.
  #10 (permalink)  
Antiguo 19/10/2012, 10:49
valago
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Enviar valor de un form a través de una URL con un script

Hola de nuevo amigo.
Vuelvo a comentar para decirte que gracias a tus explicaciones y algo de información que busqué he conseguido que envíe bien los datos del formulario, al final he optado por enviarlo a través del formulario y funciona perfectamente. Y desde ahí actualizo la base de datos con el mensaje y a la misma vez guardo la foto en una carpeta en el servidor.

Sin mas, volver a darte las gracias, y reiterar que ayudaré en lo que pueda aunque no soy un experto. Un saludo.

Etiquetas: formulario, input, php, url
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 18:35.