JavaScript - Tras Onchange devolver variable

 
Vista:
sin imagen de perfil
Val: 5
Ha aumentado su posición en 4 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Tras Onchange devolver variable

Publicado por Leo (3 intervenciones) el 28/11/2019 18:20:30
Buenas tardes:

Estoy intentando crear un formulario para busquedas avanzadas y necesito que en un select al hacer un cambio (onchange) me guarde en una variable el valor de la siguiente función para poder manejar el dato elegido posteriormenete, pero solo consigo imprimirlo en pantalla, no guardarlo en una variable. La funcion tras el onchange es la siguiente:

1
2
3
4
function lc_elige_model() {
var x = document.getElementById(«mySelect»).value;
document.getElementById(«demo»).innerHTML = x;
}

he puesto return, etc. Pero no tengo forma de tener el valor de x para posteriormente realizar otras cosas, solo de imprimirlo.

Muchas gracias
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 joel
Val: 3.506
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Tras Onchange devolver variable

Publicado por joel (895 intervenciones) el 28/11/2019 20:37:33
Hola Leo, desde donde se llama a esta función?
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
sin imagen de perfil
Val: 5
Ha aumentado su posición en 4 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Tras Onchange devolver variable

Publicado por Leo (3 intervenciones) el 28/11/2019 22:01:58
Hola Joel, gracias por responder.

Es un archivo de WordPress, concretamente archive-product.php en un formulario que he añadido. En el SELECT al hacer la elección llamo a la función, y me gustaría tener el valor obtenido para después poder usarlo denuevo en ese archivo.

<select name="lc_elige_marca" id="mySelect" onchange="lc_elige_model()">
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 Alejandro
Val: 1.448
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Tras Onchange devolver variable

Publicado por Alejandro (532 intervenciones) el 28/11/2019 22:25:36
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
La variable solo vive mientras se ejecuta la función, debes declararla fuera de ella.
1
2
3
4
5
var x;
function lc_elige_model() {
   x = document.getElementById(«mySelect»).value;
   document.getElementById(«demo»).innerHTML = x;
}
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 joel
Val: 3.506
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Tras Onchange devolver variable

Publicado por joel (895 intervenciones) el 29/11/2019 08:49:24
Si la función la llamas con un onChange tienes que hacerlo como te muestra Alejandro!!
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
sin imagen de perfil
Val: 5
Ha aumentado su posición en 4 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Tras Onchange devolver variable

Publicado por Leo (3 intervenciones) el 02/12/2019 12:33:44
Gracias Alejandro.

Después de mucho leer y pelearme con esto, he visto que el problemas es que de php a js es fácil enviar valores, pero de js a php es complejo.
Para hacerlo hay que realizarlo mediante POST o GET a un archivo. He probado en la consola y el valor lo devuelve bien, pero no me lo envía al archivo.

El tema está en que el archivo es un archivo de wordpress, archive-product.php, pero en el navegador no aperec ese archivo, sino tan solo la categoría dominio.com/vehiculos/y en la consola me dice que el valor en vehiculos no está definida esa variable.
Y ya no se como hacer más.
El nuevo código es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function lc_elige_model() {
	var x = document.getElementById("mySelect").value;
	document.getElementById("demo").innerHTML = x;
	$.ajax({
		type: 'POST',
		url: 'archive-product-php',
		data: {
			x: x
		},
		success: function (data) {
		}
	});
	console.log(x);
}

Con la tercera linea si veo en una etiqueta <p> con clase demo, el contenido, pero con eso solo lo imprimo.
Lo que necesito es que el valor se pase a la pagiba archive-product-php y lo pueda guardar. Para eso uso lo sieguiente en dicha página:

1
$modelo = $_GET['x'];


Pero, nada...

Muchas 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 José Manuel
Val: 33
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Tras Onchange devolver variable

Publicado por José Manuel (11 intervenciones) el 09/12/2019 12:08:44
Hola Leo:

Como adición a lo comentado por los compañeros y en concreto a lo que indicas en el último código que nos muestras: veo que en la llamada AJAX que haces usas POST (línea 5 del código que indicas) pero después, usas GET en PHP para obtener los datos.

Si usas POST para enviar una petición AJAX, debes usar POST para leer los datos en PHP:

1
$modelo = $_POST['x'];

Y si usas GET en la petición AJAX, tienes que usar GET en PHP:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function lc_elige_model() {
	var x = document.getElementById("mySelect").value;
	document.getElementById("demo").innerHTML = x;
	$.ajax({
		type: 'GET',
		url: 'archive-product-php',
		data: {
			x: x
		},
		success: function (data) {
		}
	});
	console.log(x);
}
...
// Después en el código PHP:
$modelo = $_GET['x'];   // Así lo tienes ahora.

Un saludo,
https://obelearningservices.com/blog/
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