Foros del Web » Creando para Internet » HTML »

Problema con los ampersand (&) en textareas

Estas en el tema de Problema con los ampersand (&) en textareas en el foro de HTML en Foros del Web. Muy buenas a todos, Estoy enviando los valores de un formulario usando el metodo GET y si en el textarea pongo un & no se ...
  #1 (permalink)  
Antiguo 26/11/2008, 01:58
 
Fecha de Ingreso: marzo-2007
Ubicación: Mallorca
Mensajes: 4
Antigüedad: 17 años, 1 mes
Puntos: 0
Exclamación Problema con los ampersand (&) en textareas

Muy buenas a todos,

Estoy enviando los valores de un formulario usando el metodo GET y si en el textarea pongo un & no se me guarda en la Base de Datos lo que viene después del ampersand. Por ejemplo, si pongo "Hola & soy Francisco" pues sólo se guarda "Hola ".

He provado sustituir el & por & me hace lo mismo, también por \& y nada... no me vale ninguna solución que contenga un ampersand.

¿Alguién puede ayudarme? Gracias de antemano
  #2 (permalink)  
Antiguo 26/11/2008, 02:07
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con los ampersand (&) en textareas

donde haces la sustitución, cuando escribes... o antes de guardar (osea, en el código) ??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 26/11/2008, 02:15
 
Fecha de Ingreso: marzo-2007
Ubicación: Mallorca
Mensajes: 4
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Problema con los ampersand (&) en textareas

Cuando le doy al boton guardar del formulario invoca lo siguiente desde Javascript:

Código:
....................................
.....Otro codigo.............
....................................

		
if(desc.length > 0) {
	for (i=0;i<=desc.length;i++){
		desc = desc.replace('&', '&amp;');
	}
}

arrNombres = new Array("accion","seleccion","page","codi","aloja","desc","fecini","autor","trans","comi","emp","kilomet","otro"); 
arrValores = new Array(accion,seleccion,page,cod,aloj,desc,fech,usua,trans,comi,emp,kilomet,otro);

var param = parameters(arrNombres, arrValores);
pedirDatos(url,param);
Las llamadas a parameters() y pedirDatos son a dos funciones que hay en un fichero AJAX que hace lo siguiente:

Código:
function pedirDatos(url, param) {

	http.open("GET", url+"?"+param, true);
	isWorking = true;
	http.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=ISO-8859-1");
	http.setRequestHeader("Content-length", param.length);
	http.send(null);
	http.onreadystatechange = handleHttpResponse;
}



function parameters(arrNombres, arrValores) {
	
	var resultado = "";
	if (arrNombres.length != arrValores.length)
		return;
	for (var arrI = 0; arrI < arrNombres.length; arrI++)
	{
		if (resultado.length > 0) resultado += "&";
		resultado += arrNombres[arrI] + "=" + arrValores[arrI];
	}
	return resultado;
}
¡Gracias por tu ayuda!
  #4 (permalink)  
Antiguo 26/11/2008, 02:38
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con los ampersand (&) en textareas

ahí esta el problema...

recuerda que el símbolo & se usa para separar variables en la cadena de datos URL ... vale?

ahora, puedes solucionarlo escapando estos valores antes de agregarlos a tu URL ... usa escape() ...

osea, quita esta parte....

Código:
if(desc.length > 0) {
	for (i=0;i<=desc.length;i++){
		desc = desc.replace('&', '&amp;');
	}
}

y usas.... escape(desc)

PDTA: deberías usar el método POST en lugar del GET, ya que GET es mas limitado...

suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Última edición por pateketrueke; 26/11/2008 a las 02:46
  #5 (permalink)  
Antiguo 26/11/2008, 06:38
 
Fecha de Ingreso: marzo-2007
Ubicación: Mallorca
Mensajes: 4
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Problema con los ampersand (&) en textareas

Muchas gracias me sirvió utilizar el escape y el unescape combinándolo en el Java con un replaceAll("&","%26");

Lo del GET lo hago porque al hacerlo por POST no me acepta ni acentos ni eñes.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:34.