Foros del Web » Programando para Internet » Jquery »

Jquerymobile con ajax

Estas en el tema de Jquerymobile con ajax en el foro de Jquery en Foros del Web. Hola, en una web móvil he intentado enviar datos por ajax a una página callajax.php pero no funcionaba. El script no lo entendían los navegadores ...
  #1 (permalink)  
Antiguo 16/12/2011, 07:54
Avatar de autonotel  
Fecha de Ingreso: junio-2003
Ubicación: Vigo
Mensajes: 480
Antigüedad: 21 años, 6 meses
Puntos: 13
Jquerymobile con ajax

Hola,
en una web móvil he intentado enviar datos por ajax a una página callajax.php pero no funcionaba. El script no lo entendían los navegadores (al menos Android).
Entonces buscando he encontrado esta maravilla que es la librería Jquerymobile pero tengo un problema:

Enviando datos con un formulario funciona perfectamente siempre que sólo haya un botón.
Pongo el código:

callajax.php

Código:
<?php
    $user = $_POST['nombre'];
    $apellido = $_POST['apellido'];
echo $user;
echo $apellido;
?>
y en la index.php

Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Submit a form via AJAX</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a4/jquery.mobile-1.0a4.min.css" />
      <script src="http://code.jquery.com/jquery-1.5.2.min.js"></script>
      <script src="http://code.jquery.com/mobile/1.0a4/jquery.mobile-1.0a4.min.js"></script>
</head>
<body>
<div data-role="page" id="callAjaxPage">
        <div data-role="header"></div>
  <div data-role="content">        
            <script>
        function onSuccess(data, status)
        {
            data = $.trim(data);
            $("#notification").text(data);
        }
 
        function onError(data, status)
        {
            // handle an error
        }        
 
        $(document).ready(function() {
            $("#submit").click(function(){
 
                var formData = $("#callAjaxForm").serialize();
 
                $.ajax({
                    type: "post",
                    url: "callajax.php",
                    cache: false,
                    data: formData,
                    success: onSuccess,
                    error: onError
                });
 
                return false;
            });
			
        });
    </script>
 
    <!-- call ajax page -->
            <form id="callAjaxForm">                           
              <input type="hidden" name="nombre" id="nombre" value="Luis"/>
              <input type="hidden" name="apellido" id="apellido" value="Grciaa"  />                 
                    <button data-theme="b" id="submit" type="submit">enviar</button>          
            </form>
            
  <h3 id="notification"></h3> 
  </div>
 
        <div data-role="footer">
           
        </div>
    </div>
</body>
</html>
Bien esto funciona perfectamente: Introduce en la etiqueta <h3> los valores de los campos hidden:

Ahora bien, si intento poner otro botón para que arroje otros valores,
el segundo botón me recarga la página, y curiosamente me devuelve una url con variables get. El primero sigue funcionando sin recargar la página pero el segundo me la recarga.

Supongamos esto:
Código:
    <!-- call ajax page -->
            <form id="callAjaxForm">                           
              <input type="hidden" name="nombre" id="nombre" value="Luis"/>
              <input type="hidden" name="apellido" id="apellido" value="Grciaa"  />                 
                    <button data-theme="b" id="submit" type="submit">enviar</button>          
            </form>

    <!-- call ajax page -->
            <form id="callAjaxForm">                           
              <input type="hidden" name="nombre" id="nombre" value="Paco"/>
              <input type="hidden" name="apellido" id="apellido" value="Perez"  />                 
                    <button data-theme="b" id="submit" type="submit">enviar</button>          
            </form>
Bueno, he intentado repetir el script y cambiar el nombre al formulario pero pasa lo mismo.

Agradecería cualquier ayuda.

Gracias de antemano
  #2 (permalink)  
Antiguo 27/12/2011, 23:45
 
Fecha de Ingreso: diciembre-2011
Mensajes: 1
Antigüedad: 13 años
Puntos: 1
Respuesta: Jquerymobile con ajax

Hola, trata de no usar el submit, solo genera evento click para cada botón:
$('#boton1').click(function(){
//Envio de data
});
$('#boton2').click(function(){
//Envio de data2
});

Espero haberte ayudado, si no, seguiremos en esto. Saludos.
  #3 (permalink)  
Antiguo 09/01/2012, 08:17
Avatar de autonotel  
Fecha de Ingreso: junio-2003
Ubicación: Vigo
Mensajes: 480
Antigüedad: 21 años, 6 meses
Puntos: 13
Respuesta: Jquerymobile con ajax

Efectivamente el boton submit debe tener su id:
<button data-theme="b" id="submit1" type="submit">enviar</button>
<button data-theme="b" id="submit2" type="submit">enviar</button>

Aparte de el formulario:
<form id="callAjaxForm1">
<form id="callAjaxForm2">
...
Gracias
  #4 (permalink)  
Antiguo 16/03/2012, 10:36
Avatar de casadepacas  
Fecha de Ingreso: octubre-2011
Mensajes: 12
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Jquerymobile con ajax

Buenas tardes a tod@s.
He pasado mi web a versión mobil, pero no consigo que el simple formulario que tengo envie los datos a mi email.
El form action="anticipadas.php", esta pagina cuelga del directorio raiz.
La index.html (version movil) esta dentro de una carpeta ../moviles/index.html.
Cuando le doy al boton enviar siempre me sale "error loading page".
Os agradezco muchisimo vuestra ayuda, no se donde esta el error.
Paqui

Codigo Form
<div><form id="form1" action="../anticipadas.php" method="get" onsubmit="MM_validateForm('nombre','','R','email', '','RisEmail','telefono','','RisNum','comentarios' ,'','R');return document.MM_returnValue">
<fieldset>
<div data-role="fieldcontain">
<label for="textinput">Nombre:</label>
<input type="text" name="nombre" id="nombre" />
<label for="textinput2">Email:</label>
<input type="text" name="email" id="email" />
<label for="textinput3">Teléfono:</label>
<input type="text" name="telefono" id="telefono" />
<label for="textarea">Comentarios:</label>
<textarea cols="40" rows="8" name="comentarios" id="comentarios"></textarea>
<input type="submit" name="enviar" id="enviar" value="Enviar" data-inline="true" data-theme="e" /></div>
</fieldset>
</form></div>
Codigo anticipadas.php
<?
/* aqui se incializan variables de PHP */
if (phpversion() >= "4.2.0") {
if ( ini_get('register_globals') != 1 ) {
$supers = array('_REQUEST',
'_ENV',
'_SERVER',
'_POST',
'_GET',
'_COOKIE',
'_SESSION',
'_FILES',
'_GLOBALS' );

foreach( $supers as $__s) {
if ( (isset($$__s) == true) && (is_array( $$__s
) == true) ) extract( $$__s, EXTR_OVERWRITE );
}
unset($supers);
}
} else {
if ( ini_get('register_globals') != 1 ) {

$supers = array('HTTP_POST_VARS',
'HTTP_GET_VARS',
'HTTP_COOKIE_VARS',
'GLOBALS',
'HTTP_SESSION_VARS',
'HTTP_SERVER_VARS',
'HTTP_ENV_VARS'
);

foreach( $supers as $__s) {
if ( (isset($$__s) == true) && (is_array( $$__s
) == true) ) extract( $$__s, EXTR_OVERWRITE );
}
unset($supers);
}
}

/* DE AQUI EN ADELANTE PUEDES EDITAR EL ARCHIVO */

if($email=="")
{
/* reclama si no se ha rellenado el campo email en el formulario */
echo "Por favor, introduce tu email en el campo correspondiente";
exit();
}

/* aquí se especifica la pagina de respuesta en caso de envío exitoso */
$respuesta="respuesta2.htm";
// la respuesta puede ser otro archivo, en incluso estar en otro servidor

/* AQUÍ ESPECIFICAS EL CORREO AL CUAL QUEIRES QUE SE ENVÍEN LOS DATOS
DEL FORMULARIO, SI QUIERES ENVIAR LOS DATOS A MÁS DE UN CORREO,
LOS PUEDES SEPARAR POR COMAS */
$para ="[email protected]";

/* AQUI ESPECIFICAS EL SUJETO (Asunto) DEL EMAIL */
$sujeto = "Información RESERVAS MOVILES";

/* aquí se construye el encabezado del correo, en futuras
versiones del script explicaré mejor esta parte */
$encabezado = "From: $nombre <$email>";
$encabezado .= "\nReply-To: $email";
$encabezado .= "\nX-Mailer: PHP/" . phpversion();

/* con esto se captura la IP del que envío el mensaje */
$ip=$REMOTE_ADDR;

/* las siguientes líneas arman el mensaje */
$mensaje .= "NOMBRE: $nombre\n";
$mensaje .= "EMAIL: $email\n";
$mensaje .= "TELEFONO: $telefono\n";
$mensaje .= "COMENTARIOS: $comentarios\n";
$mensaje .= "IP: $ip\n";

/* aqui se intenta enviar el correo, si no se
tiene éxito se da un mensaje de error */
if(!mail($para, $sujeto, $mensaje, $encabezado))
{
echo "<h1>No se pudo enviar el Mensaje</h1>";
exit();
}
else
{
/* aqui redireccionamos a la pagina de respuesta */
echo "<meta HTTP-EQUIV='refresh' content='1;url=$respuesta'>";
}

?>

Etiquetas: Ninguno
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 22:14.