PHP - Datos a txt sin recargar

 
Vista:
Imágen de perfil de Victor
Val: 20
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

Datos a txt sin recargar

Publicado por Victor (11 intervenciones) el 24/05/2016 07:18:38
Sigo en mi línea de novato. Tengo un html con js y un php para que, haciendo click en un número, este quede grabado en un txt. Puedo ver por ajax los números almacenados en ese txt. El problema en el que me he atascado es poder hacer clicks en esos números sin que la página recargue. Sé que es muy básico y que lo he visto pero no lo recuerdo :( . Gracias.

HTML

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!DOCTYPE html>
 
<html>
<head>
	<title>Ejercicio 3</title>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 
	<script src="ejercicio3.js" type="text/javascript"></script>
</head>
<body>
	<h1>¿Qué numero decimal es LXV?</h1>
	<br/>
	<br/>
	<a id="valor1" href="ejercicio3.php?cod=35">35</a>
	<a id="valor2" href="ejercicio3.php?cod=45">45</a>
	<a id="valor3" href="ejercicio3.php?cod=55">55</a>
	<a id="valor4" href="ejercicio3.php?cod=65">65</a>
	<br/>
	<a id="mostrar" href="">Mostrar los valores introducidos</a>
 
	<div id="detalles"></div>
</body>
</html>



JavaScript

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
addEventListener('load',inicio,false);
 
function inicio(){
	var enlace=document.getElementById('mostrar');
	mostrar.addEventListener('click',presionEnlace,false);
	}
 
 
 
function presionEnlace(evt){
	evt.preventDefault();
	var url=evt.target.getAttribute('href');
	muestraTexto(url);
}
 
 
 var conexion1;
 function muestraTexto(url){
 	conexion1=new XMLHttpRequest();
 	if (conexion1){
 	conexion1.onreadystatechange=procesarEventos;
 	conexion1.open('post','valores.txt',true);
 	conexion1.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
 	conexion1.send();
 	}
 }
 
 function procesarEventos(){
 	var detalles=document.getElementById('detalles');
 	if(conexion1.readyState==4){
 		detalles.innerHTML = conexion1.responseText;
 		 	}
 		 	else {
 		 	detalles.innerHTML = 'Cargando...';
 		 	}
 }



PHP

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
<?php
header('Content-Type: text/html; charset=ISO-8859-1');
 
if ($_REQUEST['cod']==35){
 $ar=fopen("valores.txt","a") or die("No se pudo abrir el archivo");
fputs($ar,$_REQUEST['cod'].", \n");
fclose($ar);
}
 
if ($_REQUEST['cod']==45){
 $ar=fopen("valores.txt","a") or die("No se pudo abrir el archivo");
fputs($ar,$_REQUEST['cod'].", \n");
fclose($ar);
}
 
if ($_REQUEST['cod']==55){
 $ar=fopen("valores.txt","a") or die("No se pudo abrir el archivo");
fputs($ar,$_REQUEST['cod'].", \n");
fclose($ar);
}
 
if ($_REQUEST['cod']==65){
 $ar=fopen("valores.txt","a") or die("No se pudo abrir el archivo");
fputs($ar,$_REQUEST['cod'].", \n");
fclose($ar);
}
 
 
 
?>
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 xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Datos a txt sin recargar

Publicado por xve (6935 intervenciones) el 24/05/2016 10:26:20
Hola Victor, de la manera que veo tu código, me da la sensación que únicamente llegan los valores al PHP al refrescar la pagina y enviarlos por GET con la url...
Desde el AJAX, no veo que envíes ningún valor...
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 Victor
Val: 20
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

Datos a txt sin recargar

Publicado por Victor (11 intervenciones) el 25/05/2016 07:03:40
Sí, me expliqué mal. Esperaba saber si conexión1 se podía utilizar también para pasar esos datos. He tirado por la cale del medio y he hecho algo como lo de abajo aunque creo que se puede/debe depurar más con las funciones (presionEnlace, imagino) para no repetirlas tanto (y esto ya sería más Javascript que php, sorry).

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
addEventListener('load',inicio,false);
 
function inicio(){
	var enlace=document.getElementById('mostrar');
	mostrar.addEventListener('click',presionEnlace,false);
	}
 
 
 
function presionEnlace(evt){
	evt.preventDefault();
	var url=evt.target.getAttribute('href');
	muestraTexto(url);
}
 
 
 var conexion1;
 function muestraTexto(url){
 	conexion1=new XMLHttpRequest();
 	if (conexion1){
 	conexion1.onreadystatechange=procesarEventos;
 	conexion1.open('post','valores.txt',true);
 	conexion1.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
 	conexion1.send();
 	}
 }
 
 function procesarEventos(){
 	var detalles=document.getElementById('detalles');
 	if(conexion1.readyState==4){
 		detalles.innerHTML = conexion1.responseText;
 		 	}
 		 	else {
 		 	detalles.innerHTML = 'Cargando...';
 		 	}
 }
 
 
 
addEventListener('load',inicio2,false);
 
function inicio2(){
	for (f=1;f<=4;f++){
	var boton=document.getElementById('valor'+f);
	boton.addEventListener('click',presionEnlace2,false);
	}
}
 
function presionEnlace2(evt2){
	evt2.preventDefault();
	var numero=evt2.target.getAttribute('href');
	puntua(numero);
 
 
}
 
 
 var conexion2;
 function puntua(numero){
 	conexion2=new XMLHttpRequest();
 	if (conexion2){
 	conexion2.onreadystatechange=procesa;
 	conexion2.open('POST',numero,true);
 	conexion2.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
 	conexion2.send();
 	}
 }
 
 function procesa(){
 	var detalles=document.getElementById('detalles');
 	if(conexion1.readyState==4){
 		detalles.innerHTML = conexion1.responseText;
 		 	}
 		 	else {
 		 	detalles.innerHTML = 'Cargando...';
 		 	}
 }

Gracias por la ayuda
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