Foros Néfele 4 Harbour › Foros › Dudas › Parámetros CallAutoForm()
- Este debate tiene 7 respuestas, 3 mensajes y ha sido actualizado por última vez el 4 años por Pedro Amaro. This post has been viewed 682 times
-
AutorEntradas
-
-
27-10-2020 a las 12:07 #1420XeviParticipante
Probando CallAutoForm...
123456789101112PROCEDURE ProvaAlertScript()Local cHtmlLocal cDato := oCGI:GetCgiValue("MiEdit","")If cDato == "aaa"cHtml := CallAutoForm( "visparam", {{ "midato", "mivalor" }} )ElsecHtml := Tag("script", "alert('Dato NO encontrado')" )EndIfoCGI:SendScript( cHtml )RETURNVisparam no muestra / no recibe el valor aParam pasado por CallAutoForm
Un Saludo,
Xevi.
-
27-10-2020 a las 12:46 #1423XeviParticipante
De momento lo solvento utilizando
oCgi:SetUserData( "midato", "mivalor" )
y
oCgi:GetUserData( "midato" )
Y aprovecho para... igual que podemos crear esas "variables" con SetUserData(),
¿se puede eliminar una de estas variables???
Algo así como... oCgi:DelUserData( "midato" )
Lo digo para no dejar "restos" en el cgi y poderlo limpiar/depurar
Aunque, pensándo en web... esas "variables" que se crean, se pueden utilizar SOLAMENTE en la póxima llamada a nuestro cgi, no??? luego, su vida termina y ya no la podemos "recuperar" en otra llamada al cgi a no ser que la volvamos a enviar/crear.
Un Saludo,
Xevi.
- Esta respuesta fue modificada 4 años por Xevi.
-
28-10-2020 a las 01:51 #1443Alfredo SanzSuperadministrador
METHOD GetUserData( cVar, uDefaultVal, lCreate ) // Consulta o establece un valor en el hash de sesiones
METHOD SetUserData( cVar, uVal ) // Establece un valor en el hash de sesiones
METHOD HasUserData( cVar ) // Devuelve si existe la variable en el hash
METHOD UnsetUserData( cVar ) // Borra elemento del hash
METHOD ResetUserData( cVar ) // Borra todo el userdataLas variables de sesión permanecen activas en un cookie con 1 año de duración
Están pendientes de hacer las flashdata, que tal y como dices, serán "de un solo uso"
-
27-10-2020 a las 12:57 #1425Alfredo SanzSuperadministrador
Vaya, revisa a ver si tenemos lo mismo.
Las pruebas que he realizado funcionan bien.1234567891011121314151617181920212223242526272829303132333435363738394041PROCEDURE Alerta2WITH OBJECT TWebPage():New():lFooter=.f.WITH OBJECT WEdit():New(:WO):cId := "valor1":cTitle := "Valor1":cHelp := "prueba con aaa o con cualquier otro valor":Create()END WITHWITH OBJECT WButton():New(:WO):cText := "Sin miedo, púlsame":cOnClick := "AjaxAlerta2":cAjaxBevel := "nflcargo":aParams := { { "valor1", "#valor1"} }:Create()END WITHoCgi:SendPage( :Create() )END WITHRETURN//------------------------------------------------------------------------------PROCEDURE AjaxAlerta2Local cHtmlLocal cDato := oCGI:GetCgiValue("valor1","")If cDato == "aaa"cHtml := callAutoForm( "visparam", {{ "midato", "mivalor" }} )ElsecHtml := Tag("script", "alert('Dato NO encontrado')" )EndIfoCGI:SendScript( cHtml )RETURNContenido no disponible.
Por favor, acepta las cookies haciendo clic en este aviso -
27-10-2020 a las 13:20 #1429XeviParticipante
Coooorrecto.
El error está en algunos valores al pasar esos parámetros.
De ahí, que no me esta funcionando donde lo necesito.
Por lo visto, si 1 parámetro texto de este contenido...
C:\Apache24\cgi-bin\tmp\tmp~202010276116586217.xlsx
lo envia/recibe/lee como...
C:Apache24cgi-bin mp mp~202010276116586217.xlsx
La '\' la quita, y '\t' lo sustituye por espacio
Así pues... en el sample que has puesto...
cHtml := callAutoForm( "visparam", {{ "midato", "C:\Apache24\cgi-bin\tmp\tmp~202010276116586217.xlsx" }} )
y el dato se trunca en 'visparam'
Tampoco, si ese valor del parámetro es un array...
cHtml := callAutoForm( "visparam", {{ "midato", {"uno","dos","tres"} }} )
'visparam' no muestra los valores del array
Un saludo,
Xevi.
-
27-10-2020 a las 22:22 #1437Pedro AmaroSuperadministrador
Los aParam tienen que ser siempre un array de {campo, cValor}, y cValor siempre debe ser una cadena, si es un valor numérico lo pasamos a cadena, pero un array no lo trata, deberás convertir ese array en una cadena antes de asignarlo. En Néfele tienes Array2Char y Char2Array para eso.
El problema con las \ no acabo de entender por que se produce, porque al navegador le llega bien, pero al hacer el envío se lo carga.
Una solución es remplazar \ por \\, desaparece el problema, voy ha integrarlo en los aParams para que lo haga solo.- Esta respuesta fue modificada 4 años por Alfredo Sanz.
-
28-10-2020 a las 09:44 #1445XeviParticipante
Pedro,
no estan las funciones documentadas...
Array2Char( aArray, cSeparator, xCol )
¿Como se utiliza y que és xCol???
Char2Array( cChar, cSeparator, nColumnas, lUpper, lVacios)
¿?¿?
en un ejemplo sencillo...
123456aDatos := { "uno", "dos", "tres" }oCGI:Console( aDatos )cDatos := oCGI:Console( Array2Char( aDatos, "|" ) ) // 1|uno2|dos3|tresoCGI:Console( Char2Array( cDatos, "|" ) ) //NO muestra nadaUn Saludo,
Xevi
-
28-10-2020 a las 11:17 #1446Pedro AmaroSuperadministrador
El orden de los factores en este caso Si altera el producto
12345678910aDatos := { "uno", "dos", "tres" }oCGI:Console( aDatos )// Aqui cDatos SIEMPRE SERA VACIO, porque oCGI:Console retorna NILcDatos := oCGI:Console( Array2Char( aDatos, "|" ) ) // 1|uno2|dos3|tres// Lo correcto seria estooCGI:Console( cDatos := Array2Char( aDatos, "|" ) ) // 1|uno2|dos3|tresoCGI:Console( Char2Array( cDatos, "|" ) ) // { "uno", "dos", "tres" }Saludos
-
-
-
AutorEntradas
- Debes estar registrado para responder a este debate.