Ir de un script a una funcionprg

Responder
Xevi
Mensajes: 3
Registered for: 2 years 2 months
Spain

Ir de un script a una funcionprg

Mensaje por Xevi »

Igual este es el sitio correcto donde exponer los problemillas que me vaya topando, pues me está enganchando ese modharbour, y sería una pena que no me esfuerce en hacerlo funcionar o mínimo entender.

Los ejemplos que veo o son simples y asimilo lo básico, o demasiado complicados y me pierdo entre tanto código.

Estoy haciendome unos ejemplos sencillos para entender cuando/como enrutar o simplemente utilizar js para operar en una misma página, sin salirme de ella.
Voy entendiendo algunas cosillas y en otras no veo como atacar lo que pretendo.

En este caso, sin moverme de una página, llamar un evento con un botón.
Puedo hacerlo con script

Código: Seleccionar todo

	<input id="dataemissio" value="Nada"></input>
	<input type="button" id="btn1" type="button" onclick='visibility_dataemissio()' value="Prueba"></input>

	<script>
		function visibility_dataemissio() {
			document.getElementById('dataemissio').value = "Texto prueba";
		}
	</script>
y queriendo avanzar, me encuentro con esas dudillas...

1a ¿Se puede hacer lo mismo con una función prg?
No se si desde el mismo botón se puede invocar una función que tengo en un prg o de no ser posible, si desde el script poder llamar a la función prg

2a De poderse llamar/invocar, ¿como se pasarían parámetros a la función y recogerlos desde una variable del html o desde el script?


Creo que para que pueda avanzar debo de entender ese escollo donde me encuentro.

Gracias por vuestro tiempo.
Un Saludo,
Xevi.

williamL
Mensajes: 18
Registered for: 2 years 1 month
El Salvador

Mensaje por williamL »

Xevi: mirate los ejemplos de TWeb para Modharbour v.2.1 de Charly. Creo que allí encontraras las respuestas.

Cristobal
Site Admin
Mensajes: 305
Registered for: 2 years 3 months
Spain

Mensaje por Cristobal »

Xevi, entiendo que lo que pretendes es llamar en el onclick del button a una function harbour
Bien, hasta donde yo entiendo, solo lo puedes hacer o bien a través de AJAX o llamando a la url de tu enrutador con el parámetro adecuado para que se ejecute allí.
Entiendo que es un problema de conceptos
Que en tu código js puedas incluir llamadas tipo {{ .... }} o como en cada versión o framework estén diseñados, no significa que tú puedas ejecutar eso en tiempo de ejecución, eso se tiene en cuenta en el preprocesado, y al ejecutarse por primera vez en el mod, pero ese código ya no estará presente cuando tú llegues a la página web y hagas click en el button. Espero haberme explicado.
Cualquiera de las dos opciones que te he comentado podrian funcionar: tanto a través de AJAX como llamando a tu enrutador.
Lo que te puede despistar es que quizás solo quieras modificar algo de tu página web actual, y llamar a otra url al invocar a tu enrutador te da la sensación que puedes tener que repintar dicha página: casi seguro que es lo que te pasará, tendrás que volver a pintar toda la página con la modificación realizada.
No es que el mod funcione de forma distinta, o no sea adecuado para trabajar en web, simplemente como te digo es un tema de conceptos cuando te enfrentas a la forma de desarrollar aplicaciones para entorno web.
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces

ramirezosvaldo
Mensajes: 126
Registered for: 2 years 2 months
Mexico

Mensaje por ramirezosvaldo »

Que tal, buenas noches.

Echale un vistazo a codigo fuente de tu pagina.
(Boton derecho del raton sobre tu pagina) y le picas "show page source" y ahi te darás cuenta como esta tu pagina ya pre-procesada.

Saludos

Note: Como dice Charly, el navegador es tu "amigo fiel"

Xevi
Mensajes: 3
Registered for: 2 years 2 months
Spain

Mensaje por Xevi »

Cristobal.

Por lo que me dices, entiendo que hay dos vías posibles (o más, jejeje)
A ver si esta sería una opción (via Ajax, entiendo) para poder hacer la llamada a una función de mi.prg

Código: Seleccionar todo

<head>
	<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
</head>

	<input type="button" id="btnajax" value="Prueba Ajax"></input>

	<script>
		$("#btnajax").click(function(event){
			event.preventDefault();
			var email = $("#email1").val();
			var pass = $("#password1").val();
			$.ajax({
				url :   "login.php",
				method: "POST",
				data    :   {Email:email,Password:pass},
				success :function(data){

					if(data == "ok"){
						////window.location.href = "profile.php";
						//$("#mostrarmodal1").modal("hide");
						//location.href="usernav";
						alert("Mensaje OK, seguir...");
					} else {
						alert("Mensaje KO, volver...");
					}
				}
			})
		})

	</script>
He probado de poner
url : "prueba.prg",
también
url : "./src/prueba.prg",
otras direcciones, pero no creo que lo llegue a llamar.

mi prueba.prg que la alojo en la carpeta C:\xampp\htdocs\xevi\src

Código: Seleccionar todo

function main()

   ?? "no se si deberia de mostrarse ese texto, pero lo que me interesa es poder, de momento, hacer y enviar una respuesta"

retu 'ok'
A ver si me puedes hechar una mano a entender un poquinin Ajax, o alguien más que pueda entender lo que pretendo hacer.

Gracias por vuestro tiempo.

Un Saludo,
Xevi.

Xevi
Mensajes: 3
Registered for: 2 years 2 months
Spain

Mensaje por Xevi »

Bien, he conseguido, con la ayuda de la gente del grupo, hacer andar mi primer ejemplo de modharbour, con lo mínimo, llamar de un html a un prg y que éste procese y mande datos para interactuar sobre la misma página...

fichero html...

Código: Seleccionar todo

<html>
 
<head>
 
	<title>Ejemplo sencillo de AJAX</title>
 
	<script src="https://code.jquery.com/jquery-3.6.0.js"></script>

	<script>
	function realizaProceso(valorCaja1, valorCaja2){
			var parametros = {
					"valorCaja1" : valorCaja1,
					"valorCaja2" : valorCaja2
			};
			$.ajax({
					data:  parametros,
					url:   'ejemplo_ajax_proceso.prg',
					type:  'post',
					beforeSend: function () {
							$("#resultado").html("Procesando, espere por favor...");
					},
					success:  function (response) {
							console.log( response );
							$("#resultado").text( response[ "resultado" ] );
					}
			});
	}
	</script>
 
</head>
 
<body>
	<h3>Ejemplo sencillo de AJAX</h3>
	
	Introduce valor 1

	<input type="text" name="caja_texto" id="valor1" value="0"/>


	<p>Introduce valor 2
 
	<input type="text" name="caja_texto" id="valor2" value="0"/>
 
	<p>Realiza suma
 
	<input type="button" href="javascript:;" onclick="realizaProceso($('#valor1').val(), $('#valor2').val());return false;" value="Calcula"/>
 
	<br/>
	<hr>
	Resultado: <span id="resultado">0</span>
 
</body>
 
</html>
fichero ejemplo_ajax_proceso.prg...

Código: Seleccionar todo

function Main()
	local hPairs := AP_PostPairs()
	local hResponse := {=>}

	AP_SetContentType( "application/json" )
	hResponse[ 'resultado' ] := Str( Val(hPairs['valorCaja1']) + Val(hPairs['valorCaja2']) )
	?? hb_jsonencode( hResponse, .t. ) //?? Es lo que se devuelve al script+Ajax

return nil
https://xevicomas.duckdns.org/xevi/ejemplo_ajax_proceso

Primer capítulo que tenia pendiente en modharbour cumplido!!!

Gracias a todos por vuestro tiempo y paciencia.

Un Saludo,
Xevi.

Responder