Foros del Web » Programando para Internet » Javascript »

cadena mal construida comillas dobles

Estas en el tema de cadena mal construida comillas dobles en el foro de Javascript en Foros del Web. buenas tardes llevo bastante tiempo peleando con lo siguiente, por razones que desconozco, cuando construyo el cuerpo de un mensaje que envio en asp a ...
  #1 (permalink)  
Antiguo 04/05/2007, 14:03
 
Fecha de Ingreso: julio-2002
Mensajes: 813
Antigüedad: 22 años, 6 meses
Puntos: 2
cadena mal construida comillas dobles

buenas tardes

llevo bastante tiempo peleando con lo siguiente, por razones que desconozco, cuando construyo el cuerpo de un mensaje que envio en asp a su destinatario, y hay algún error en la construcción de la cadena que se envía el correo no se procesa,

por ejemplo, se defino el cuerpo del mensaje que voy a procesar de la siguiente forma:

cuerpo += "<br />";
cuerpo += "<a href=\'http://www.isme.es/comunica/comunicarepe.asp?clave="+numero+"\'>Tiene una Repuesta</a>";
cuerpo += "<br />";
cuerpo += "O bien, copia y pega en la barra de direcciones de tu navegador.";
cuerpo += "<br />";
cuerpo += "El equipo ISME";

alert(cuerpo);

el envío del correo no se produce, bien aparentemente el código parece correcto, sin embargo, si intento mostrar el contenido de cuerpo en un alert
me da un error.

he estudiado el problema y ocurre que javascript, al menos en el alert, ha encerrado todo el contenido del alert entre comilla simple y eso provoca el error, si sustituyo en el código generado la comilla simple inicial y final por comillas dobles se acabo el problema, manualmente claro, y despues de que el script se haya generado.

pero esto no puedo, recordando la parte inicial de este largo mensaje, el código se genera en una pagina asp, utilizando como lenguaje de script a javascript,

por donde me tiro ?

gracias.
salu2.
  #2 (permalink)  
Antiguo 04/05/2007, 16:00
Avatar de tomerqueves  
Fecha de Ingreso: marzo-2005
Ubicación: algeciras (cadiz)
Mensajes: 200
Antigüedad: 19 años, 10 meses
Puntos: 7
Re: cadena mal construida comillas dobles

se le llama escapar comillas. yo no estoy muy versado y por eso no puedo analizar y solucionar el error de tu cadena... mi experiencia me dice que el error va a estar localizado donde aparece una una barra seguida de una comilla o al contrario.. no sé si será una buena propuesta dejar espacio blanco despues de cada comilla porque no se de que modo procesará los espacios en blanco pero lo que sí que te puede funcionar es evitar anidar comillas... a lo mejor te va a multiplicar un poquillo las lineas pero...

algo asi.
Código:
cuerpo += "<br />";
cuerpo += "<a href=\'http://www.isme.es/comunica/comunicarepe.asp?clave=";
cuerpo += "+numero+=";
cuerpo += "\'>Tiene una Repuesta</a>";
cuerpo += "<br />";
cuerpo += "O bien, copia y pega en la barra de direcciones de tu navegador.";
cuerpo += "<br />";
cuerpo += "El equipo ISME";

si el primer intento no ha funcionado, yo sé que los aler interpretan la barra \ dandole al siguiente caracter caríz de caracter de control, y así un \n supone un salto de linea en el aler.... he visto que hay esos simbolos justo antes de las comillas simples y supongo que será un intento de escaparla... pero si no nos responde siempre puede que nos quede...



Código:
cuerpo += "<br />";
cuerpo += "<a href=";
cuerpo +="'http://www.isme.es/comunica/comunicarepe.asp?clave=";
cuerpo +="+numero+"
cuerpo +="'>Tiene una Repuesta</a>";
cuerpo += "<br />";
cuerpo += "O bien, copia y pega en la barra de direcciones de tu navegador.";
cuerpo += "<br />";
cuerpo += "El equipo ISME";
es un paso más de "modularidad" de la cadena... se me sigue ocurriendo ir un poco más alla debido a que aun siguen apareciendo comillas simples dentro de comillas dobles, pero me parece que esto no es problema sino el a la hora de escapar que hay que escapar tanto comillas como barras y esto se hace tedioso y da lugar a errores.

si alguna de las comillas simple que habia anteriormente dejan de tener sentido...

Código:
cuerpo += "<br />";
cuerpo += "<a href=http://www.isme.es/comunica/comunicarepe.asp?clave=";
cuerpo +="+numero+"
cuerpo +=">Tiene una Repuesta</a>";
cuerpo += "<br />";
cuerpo += "O bien, copia y pega en la barra de direcciones de tu navegador.";
cuerpo += "<br />";
cuerpo += "El equipo ISME";





Prueba a ver si alguno de esos dos remiendos te lo soluciona o sino puedes ir más alla y no dejar ni comilla dentro de comilla ni tampoco barra seguido de comilla...
Espero que te funcione porque yo no puedo testear mi respuesta,
ahora si.
Si no recuerdo mal las barras se escapan poniendo doble barra, por ejemplo, si pretendes escribir \n literalmente en tu alert sería \\n y si pretendes escribir una comilla literalmente sería \"...
venga, reitero. Espero no haberte dado respuesta falsa y haber ayudado.
Saludos.
__________________
A todos los moderadores y admiinistradores. Si algun día me banean, por favor devolverme la carita de mi avatar

Última edición por tomerqueves; 04/05/2007 a las 16:09 Razón: habia una errata en la primera propuesta
  #3 (permalink)  
Antiguo 04/05/2007, 16:00
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 19 años, 7 meses
Puntos: 88
Re: cadena mal construida comillas dobles

a mi me funciona perfecto pero tuve que inicializar la variable cuerpo
me quedo así
Código HTML:
<script language="javascript">
var numero=5;//esto es solo para prueba, en mi caso
var cuerpo='';
cuerpo += "<br />";
cuerpo += "<a href=\'http://www.isme.es/comunica/comunicarepe.asp?clave="+numero+"\'>Tiene una Repuesta</a>";
cuerpo += "<br />";
cuerpo += "O bien, copia y pega en la barra de direcciones de tu navegador.";
cuerpo += "<br />";
cuerpo += "El equipo ISME";
//para prueba
document.write(cuerpo);
alert(cuerpo);
</script> 
espero que te de una idea.

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
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 11:01.