PHP - Tomar los datos de ajax en PHP

   
Vista:

Tomar los datos de ajax en PHP

Publicado por Damian (62 intervenciones) el 20/08/2014 16:43:25
Estoy trabajando con php y JQuery. En JQuery tengo:
1
2
3
4
5
6
7
8
9
10
11
12
$("#btnEnviar").click(function(){
	$("#txtRes").show();
var dataString = $("#FormJ").serialize();
        //alert('Datos serializados: '+dataString);
        $.ajax({
            type: "POST",
            url: "PreguntasIT.php",
            data: dataString,
            success: function(data) {
            }
        });
  })
El form es "FormJ" el boton es de type "submit" con su id="btnEnviar". Está comentado el alert porque no me interesa mostrar un mensaje era sólo para ver si los datos se veían, y así es, lo muestra.

1) Ahora el formulario está así:
1
<form id="FormJ" name="FormJ" action="PreguntasIT.php" method="post">...</form>
¿Hace falta poner en el action el "PreguntasIT" y method="post"? ¿O al estar ya en el ajax es redundante y debo sacarlo?

2) El código de PHP está así ahora:
1
2
3
4
5
6
7
8
9
10
11
12
if (isset($_POST['btnEnviar'])){
	$Nombre=$_POST['Nombre'];
	$Apellido=$_POST['Apellido'];
	$Nick=$_POST['Nick'];
	$Mail=$_POST['Email'];
	$Pass=$_POST['Pass'];
	$Pais=$_POST['Pais'];
	$Estado=$_POST['Estado'];
	$Ciudad=$_POST['Ciudad'];
if($_POST['Nick'] and $_POST['Email'] and $_POST['Pass'] and $_POST['Pais']){
   $sql = "INSERT INTO usuarios (Nombre,Apellido,Usuario,Mail,Pass,Pais,Provincia,Ciudad)".
     "VALUES ('".$Nombre."','".$Apellido."','".$Nick."','".$Mail."','".$Pass."','".$Pais."','".$Estado."','".$Ciudad."')";
Esta bien esto anda, pero me recarga toda la página, lo que quiero es recuperar lo que esta en JQuery desde PHP. ¿Hace falta igual hacer un $_POST['btnEnviar']?

3) Otra cosa, ¿Como hago para cuando el usuario me recargue la página, no me haga de nuevo un insert de la base de datos? Eso me pasa si refresca la página.


Espero me puedan decir!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Salvador

Tomar los datos de ajax en PHP

Publicado por Salvador (125 intervenciones) el 20/08/2014 18:07:27
Lo que pasa es que tu formulario esta tirando a la pagina de PHP, lo que debes hacer es asignar la funcion,,, algo asi como

<form name="formID" action="POST" onsubmit="enviarDatos(); return false">
</form>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Tomar los datos de ajax en PHP

Publicado por Damian (62 intervenciones) el 20/08/2014 20:47:20
¿Eso se refiere al punto 3? ¿O es para que me tome los datos? Esa función enviarDatos() donde la debo poner en JQuery, en que parte.
Además, como hago para cargar en PHP (o sea los input), lo que se envió como post en JQuery. Y si hay otro método lo mismo es.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Tomar los datos de ajax en PHP

Publicado por xve (5520 intervenciones) el 20/08/2014 22:04:16
Hola Damian, en la función jquery, devuelve false (return false;) para que no se ejecute el click del botón...

Coméntanos si así te ha funcionado, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Tomar los datos de ajax en PHP

Publicado por Damian (62 intervenciones) el 20/08/2014 22:44:56
No entiendo, donde debería poner eso. Me puedes poner el código de como quedaría tanto en PHP (con su formulario) como en JQuery. Estoy probando y todo sigue igual, me refresca toda la página y si actualizo la página me repite el último registro en MySQL, o sea se generan registros duplicados.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Tomar los datos de ajax en PHP

Publicado por xve (5520 intervenciones) el 21/08/2014 10:00:23
Tienes que hacer algo como te comento Damian, o en el formulario, en vez de utilizar un <input type="submit"..., utilizar un <input type="button"... que no hace el submit del formulario.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Tomar los datos de ajax en PHP

Publicado por Damian (62 intervenciones) el 21/08/2014 15:53:59
No, de esa forma no hace nada. Sólo carga los datos cuando está el input type "submit", pero claro recarga toda la página, con el type "button" no se genera nada.
Estaba viendo lo que está en esta web http://api.jquery.com/jquery.post/ hay varios ejemplos y los he probado a todos pero no me funciona.
Me facilitaría mucho si alguien tiene algo de código: tanto el form con algunos input, el php para luego guardar y el JQuery. Seguro me estoy olvidando algún paso o parámetro y que no se donde sería. Porque por ejemplo ahí me ponían "onsubmit="enviarDatos(); return false"" para el form, ¿pero después que? en que parte de JQuery pongo la función "enviarDatos()".
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Tomar los datos de ajax en PHP

Publicado por xve (5520 intervenciones) el 22/08/2014 08:06:28
Hola Damian, si sigue teniendo el ID "btnEnviar" tiene que ejecutar el evento click!!!
1
$("#btnEnviar").click(function(){

Nos puedes mostrar tu formulario?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Tomar los datos de ajax en PHP

Publicado por Damian (62 intervenciones) el 22/08/2014 16:51:42
Asi es, así lo tengo en JQuery...pero no hace nada.
Sacando algunos input, el formulario está así:
1
2
3
4
5
6
7
8
<form id="FormJ" method="post"><label style="color:#666">Nombre:</label><br><input type="text" name="Nombre" id="Nombre" value="" autofocus tabindex="1">
  <label style="color:#666">Apellido:</label>
  <br><input name="Apellido" id="Apellido" type="text" tabindex="2">
  <label style="color:#666">Usuario/nick:</label> (<span style="color:#900;font-weight:bold;font-size:12px">*</span>)<br><input required name="Nick" id="Nick" type="text" tabindex="3">
 <label style="color:#666">E-mail:</label><br><input required name="Email" id="Email" type="email" tabindex="3">
<label style="color:#666">Contraseña:</label><br><input required name="Pass" id="Pass" value="" tabindex="4" type="password">
  <input type="button" id="btnEnviar" name="btnEnviar" value="Cargar datos" tabindex="8">
   <br><input type="hidden" name="Enviar" value="1"></form>

NOta: Le puse el method="post" para luego tomar los valores de los input por php. Repito sólo anda con el input type submit (me refresca toda la página), con el type button no hace nada.

En la parte de JQuery (como también ya dije) tengo:
1
2
3
4
5
6
7
8
9
10
11
12
13
$("#btnEnviar").click(function(){
	$("#txtRes").show();
var dataString = $("#FormJ").serialize();
        //alert('Datos serializados: '+dataString);
        $.ajax({
            type: "POST",
            url: "PreguntasIT.php",
            data: dataString,
            success: function(data) {
			//	return false;
            }
        });
  })

Nota: El txtRes es un div que se muestra (o debería mostrar) cuando se cargan los datos en la BD. Cosa que sólo funciona con el botón type submit.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Tomar los datos de ajax en PHP

Publicado por xve (5520 intervenciones) el 22/08/2014 21:33:28
Hola Damian, la verdad, no se como lo tienes, pero yo lo he probado y funciona perfectamente!!!

Si creas una nueva pagina con este contenido únicamente, veras que te funciona perfectamente!!!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="utf-8">
    <script src="http://code.jquery.com/jquery-1.11.1.js" type="text/javascript"></script>
 
    <script>
    $(document).ready(function(){
		$("#btnEnviar").click(function(){
			var dataString = $("#FormJ").serialize();
			//alert('Datos serializados: '+dataString);
			$.ajax({
				type: "POST",
				url: "PreguntasIT.php",
				data: dataString,
				success: function(data) {
				//	return false;
				}
			});
		});
	});
	</script>
</head>
 
<body>
 
<form id="FormJ" method="post"><label style="color:#666">Nombre:</label><br><input type="text" name="Nombre" id="Nombre" value="" autofocus tabindex="1">
  <label style="color:#666">Apellido:</label>
  <br><input name="Apellido" id="Apellido" type="text" tabindex="2">
  <label style="color:#666">Usuario/nick:</label> (<span style="color:#900;font-weight:bold;font-size:12px">*</span>)<br><input required name="Nick" id="Nick" type="text" tabindex="3">
 <label style="color:#666">E-mail:</label><br><input required name="Email" id="Email" type="email" tabindex="3">
<label style="color:#666">Contraseña:</label><br><input required name="Pass" id="Pass" value="" tabindex="4" type="password">
  <input type="button" id="btnEnviar" name="btnEnviar" value="Cargar datos" tabindex="8">
   <br><input type="hidden" name="Enviar" value="1"></form>
 
</body>
</html>

Haber si averiguas porque a ti no te funciona!!!

Ya nos comentaras...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Tomar los datos de ajax en PHP

Publicado por Damian (62 intervenciones) el 22/08/2014 23:23:52
Bueno, he creado una nueva página con ese contenido y la verdad es que no anda. No hace nada, igual no tiene nada por hacer. No se si le agregaste código php para ver si anda. En mi caso, yo si lo hice y no guarda nada.

Lo que no entiendo es cómo lo probaste y que es lo que te funciona perfectamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Tomar los datos de ajax en PHP

Publicado por Damian (62 intervenciones) el 23/08/2014 15:27:16
En definitiva, si yo muestro un div (que anteriormente estaba oculto) desde el click del botón, también me funciona. El problema está creo cuando quiero trabajar con PHP. ¿Cómo hago para insertar en MySQL los valores de los distintos input desde PHP? Utilizo el if (isset($_POST['btnEnviar'])){....} pero no hace nada. Quizás hay que hacerlo de otra forma.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Tomar los datos de ajax en PHP

Publicado por xve (5520 intervenciones) el 23/08/2014 21:51:28
Hola Damian, yo lo probe con un alert(), ya que no dispongo del archivo PreguntasIT.php... pero tu tienes que ver que hace la llamada a dicho archivo!!!, es decir, que el evento click funciona con el input type button...

Prueba así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="utf-8">
    <script src="http://code.jquery.com/jquery-1.11.1.js" type="text/javascript"></script>
 
    <script>
    $(document).ready(function(){
		$("#btnEnviar").click(function(){
			alert("has pulsado el button!!!");
		});
	});
	</script>
</head>
 
<body>
 
<form id="FormJ" method="post"><label style="color:#666">Nombre:</label><br><input type="text" name="Nombre" id="Nombre" value="" autofocus tabindex="1">
  <label style="color:#666">Apellido:</label>
  <br><input name="Apellido" id="Apellido" type="text" tabindex="2">
  <label style="color:#666">Usuario/nick:</label> (<span style="color:#900;font-weight:bold;font-size:12px">*</span>)<br><input required name="Nick" id="Nick" type="text" tabindex="3">
 <label style="color:#666">E-mail:</label><br><input required name="Email" id="Email" type="email" tabindex="3">
<label style="color:#666">Contraseña:</label><br><input required name="Pass" id="Pass" value="" tabindex="4" type="password">
  <input type="button" id="btnEnviar" name="btnEnviar" value="Cargar datos" tabindex="8">
   <br><input type="hidden" name="Enviar" value="1"></form>
 
</body>
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Tomar los datos de ajax en PHP

Publicado por xve (5520 intervenciones) el 23/08/2014 21:52:29
.... pero esto es otro tema, no??? no tiene nada que ver con el problema de este hilo, no?
Te funciona el tema del <input type="button" que genera el evento click??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Tomar los datos de ajax en PHP

Publicado por Damian (62 intervenciones) el 24/08/2014 00:03:28
La verdad que si tiene que ver con el problema de este hilo. Si te fijas mi consulta inicial, donde en el punto 2) escribo sobre php. Y ese es mi problema y por algo estoy en el foro de PHP sino estaría en el de JQuery.
No logro que me haga nada en PHP...no guarda nada!!! Es como si los diferentes $_POST['Nombre']....vienen vacíos o tal vez ni entra al if (isset($_POST['btnEnviar']))
Me falta lo de PHP...tal cual comence este hilo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Tomar los datos de ajax en PHP

Publicado por Damian (62 intervenciones) el 26/08/2014 14:36:45
Bueno se ve que por aca no voy a encontrar la solución. Estuve buscando un poco en Google y me tope con esta página: http://stackoverflow.com/questions/9694608/submitting-a-form-using-input-type-button

Y ahí comentan que no hay que usar el el botón de type "button" sino que tiene que ser de type "submit". Así que bueno ahora estoy probando con el type "submit" pero aún con inconvenientes, me refresca todo la página y no logro que trabaje bien desde php cuando quiero guardar los datos de los inputs.

Gracias de todas formas...me seguiré rompiendo la cabeza, que es como debe ser!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Tomar los datos de ajax en PHP

Publicado por xve (5520 intervenciones) el 26/08/2014 21:51:14
Hola Damian, haber si me se explicar...

El submit en un formulario, lo unico que hace, es rellamar a la pagina por defecto (si no le dices lo contrario) enviando todos los parametros del formulario.

El button, no envia nada.

Para este ejemplo, que quieres ejecutar el evento click del jquery, te da lo mismo el que utlices siempre y cuando no refresque el formulario.

Si te fijas en el último ejemplo que te mostré veras que con el button te muestra el alert() de javascript.
Si miras el primer ejemplo y revisas la consola del navegador, veras que hace la petición al archivo PreguntasIT.php. Ahi es donde creo que tienes el problema, porque la llamada en el ejemplo que te puse la hace.


Creo que decir que "aquí no vas a encontrar la solución", cuando te intentamos ayudar mostrándote código (que si funciona), y realmente el problema creo que es de desconocimiento tuyo de no saber seguir el código y revisar paso a paso por donde se va ejecutando y detectar los errores.

No pasa nada por no saber, yo también utilizo mucho los foros para preguntar, muchas cosas no las se, pero si se un poco de javascript... aunque lógicamente no lo se todo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Tomar los datos de ajax en PHP

Publicado por Damian (62 intervenciones) el 26/08/2014 23:35:03
Es verdad lo que dices xve y perdón por el comentario. Ahora esta funcionando, pero claro con el botón como "submit" lo cual me refresca toda la página. No encuentro la manera de que no se refresque todo.
Seguiré viendo y si encuentro la solución la publicaré en este hilo, por si alguien se topa con lo mismo en algún momento.

Gracias!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Tomar los datos de ajax en PHP

Publicado por xve (5520 intervenciones) el 27/08/2014 08:40:06
Una manera damian, es modificar:
1
<form id="FormJ" method="post">
por:
1
<form id="FormJ" method="post" onSubmit="return false;">

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Tomar los datos de ajax en PHP

Publicado por Damian (62 intervenciones) el 27/08/2014 14:49:15
No, no hay caso, lo estuve probando. No funciona, apreto el botón del formulario y no hace nada.
:(
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar