AJAX - Enviar dos variables en una función Ajax a php

   
Vista:
Imágen de perfil de Reinaldo

Enviar dos variables en una función Ajax a php

Publicado por Reinaldo (5 intervenciones) el 20/01/2016 14:51:10
Cordial saludo.

Me encuentro desarrollando una página web que busca una parte de un libro almacenado en una base de datos (nombre del libro y número de capitulo)y la muestra en la página.

He utilizado ajax y jQuery para generar dos select dependientes. Lo que necesito ahora es obtener los valores seleccionados de esos select dependientes.

He utilizado estas funciones con éxito sólo para un valor y una sola función, pero no sé como pasar los dos valores de los select en una sola función:

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
function cargarPaginaPHP(pagina, contenedor, data) {
                var selected = $("#libros option:selected").text();
                var content = $('#' + contenedor);
                  $.ajax({
                        type: "GET",
                        url: "" + pagina,
                        data: "selected=" + selected,
                        success: function(data) {
                          content.html(data);
                        }
                    });
                }
 
                function cargarPaginaPHP2(pagina, contenedor, data) {
                var selected2 = $("#capitulos option:selected").text();
                var content = $('#' + contenedor);
                  $.ajax({
                        type: "GET",
                        url: "" + pagina,
                        data: "selected=" + selected2,
                        success: function(data) {
                        content.html(data);
                      }
                  });
              }


Al presionar un botón, se capturarían los dos valores, sin embargo esto me está generando valores incorrectos o el desconcertante error "undefined index".

Aquí la etiqueta HTML que llama las dos funciones:

1
<input type="button" onclick="cargarPaginaPHP('recibeParametro.php','contenedor','');cargarPaginaPHP2('recibeParametro.php','contenedor','');" >

Necesito lo siguiente:

1. Que reconozca los valores activos o visibles del select aún sin haber seleccionado previamente un valor del combo (ya que puede no reconocer valores del select de capítulo sin antes no haberlo seleccionado).

2. enviar el valor de las dos variables (selected y selected2) en una sola función de ajax y que la reconozca sin un "notice: undefined index" en el correspondiente script de php.

3. generar la etiqueta html que llame a esa función con sus parámetros correspondientes.

Por favor si alguien puede ayudarme le agradecería ya que llevo varios días en este problema y soy novato en este campo de la programación.
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 Reinaldo

Enviar dos variables en una función Ajax a php

Publicado por Reinaldo (5 intervenciones) el 20/01/2016 20:08:35
Hola a todos, hice unas correcciones y parece que así sirve (por si alguien tiene la misma duda):


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function cargarPaginaPHP3(pagina, contenedor, data) {
                                                var selected = $("#libros option:selected").text();
                                                var selected2 = $("#capitulos option:selected").text();
                                                var content = $('#' + contenedor);
                                                  $.ajax({
                                                        type: "GET",
                                                        url: "" + pagina,
                                                        //data: {"selected=" + selected, "selected2=" + selected},
                                                        data: {selected: selected, selected2: selected2 },
                                                        //datatype: "json";
                                                        success: function(data) {
                                                        content.html(data);
                                                      }
                                                  });
                                              }
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 Vainas

Enviar dos variables en una función Ajax a php

Publicado por Vainas (71 intervenciones) el 20/01/2016 20:21:00
Buenas:


Bien que lo has resuelto tu solo!! Solo un par de cosas:

1. Si en la function no usas data no lo declares. No veo que uses ese data que se pasa como parametro por ningun sitio.

2. El ajax de jQuery en su parametro data puedes pasar los parametros:

a. Como un string de pares de valores (clave=valor) de este modo: parametro1=valor1&parametro2=valor2&....
b. Como un objeto javascript (que es lo que has hecho tu): {"parametro1: valor1, "parametro2": valor2} pero ten en cuenta que tu clave debe ser una cadena y deberia ir entre comillas. Ya se encarga jQuery de pasarlo a un string como comente en el punto anterior.

3. No creo que sea necesario que hagas:

url: "" + pagina ya que javascript sabe que pagina es un string. Solo tienes que poner:

1
url: pagina,

4. Puedes usar success dentro de ajax o done fuera:

la funcion success trae los valores de vuelta pero se esta poniendo de moda usar done:

1
2
3
$.ajax({...}).done(function(data{
 ... Aqui puedes poner el codigo que tienes en success
}));

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Reinaldo

Enviar dos variables en una función Ajax a php

Publicado por Reinaldo (5 intervenciones) el 20/01/2016 20:56:49
Hola, gracias por tu interés en mi tema. Y sí, veo que tienes buenas ideas, la verdad es que estoy trabajando con código viejo tomado de algunas partes jeje y pues eso.

Si te entendí bien, el código debería quedar como algo 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
function cargarPaginaPHP3(pagina, contenedor) {    //Supongo que el data que estoy pasando en la función lo tengo que omitir...
 
                                                var selected = $("#libros option:selected").text();
 
                                                var selected2 = $("#capitulos option:selected").text();
 
                                                var content = $('#' + contenedor);
 
                                                  $.ajax({
 
                                                        type: "GET",
 
                                                        url: pagina,
 
                                                        data: {selected: selected, selected2: selected2 },
 
 
 
                                                      }
 
                                                      done(function(data{
 
                                                      content.html(data);
 
                                                  }));

Siempre se puede mejorar el código un poco más ;)

_____________

Keep Coding
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 Reinaldo

Enviar dos variables en una función Ajax a php

Publicado por Reinaldo (5 intervenciones) el 20/01/2016 22:21:27
Este código funciona, pero una sola vez y con los valores que están seleccionados desde el principio, no con los que el usuario cambie desde el select.

Si alguien puede ayudarme para ver si se puede hacer dinámico que al cambiar las opciones del select, cambien los valores que se pasan por ajax a php. 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 Vainas

Enviar dos variables en una función Ajax a php

Publicado por Vainas (71 intervenciones) el 20/01/2016 23:21:33
Prueba asi (compara con tu codigo anteior ya que he hecho algunas modificaciones y cosas que faltaban):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function cargarPaginaPHP3(pagina, contenedor){
	var selected = $("#libros option:selected").text();
	var selected2 = $("#capitulos option:selected").text();
	var content = $('#' + contenedor);
	console.log("selected = "+selected);
	console.log("selected2 = "+selected2);
	$.ajax({
		type: "GET",
		url: pagina,
		data: {"selected": selected, "selected2": selected2 } // la coma que habia aqui no es necesaria
	  }).done(function(data){
	  content.html(data);
	});
}

He puesto 2 console.log() que puedes ver que resultado te dan en la consola de tu navegador para ver si obtiene el valor cambiado antes de entrar en el ajax. De resto yo creo que todo lo tienes bien y no deberia haber fallos.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Reinaldo

Enviar dos variables en una función Ajax a php

Publicado por Reinaldo (5 intervenciones) el 21/01/2016 13:55:07
Hola.

He verificado el código que enviaste y sí funciona, el problema lo tenía en otra parte, más exactamente en un include que hacía al index.php en la página que cargaba los capítulos y por eso cada vez que seleccionaba volvía al principio y no devolvía valores desde ajax a php.

De nuevo gracias por la ayuda. Creo que puedo dar por terminado este tema.
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