Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/04/2010, 06:16
Avatar de Panino5001
Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Error: unterminated string literal

Si trabajas con php del lado del servidor, podrías usar esto para evitar ese problema:
http://www.forosdelweb.com/2846915-post4.html
Se trata de realizar un escape hexadecimal de lo que obtienes de la base de datos o de lo que sea, para luego usar la cadena escapada en un innerHTML o en donde necesites que javascript lo muestre.

Muchas veces, cuando sugiero esto, no termino de dejar en claro lo que estoy diciendo, así que agregaré un ejemplo.
Si usás lo siguiente obtendrás un error semejante al que estás describiendo (unterminated string litera):
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<
title>Documento sin t&#237;tulo</title>
<script>
onload=function(){
    
document.getElementById('player').innerHTML='
    <object width="304" height="182">
    <param name="movie" value="http://www.youtube.com/v/6Nt391Y6ZeI?f=user_uploads&amp;app=youtube_gdata&amp;hl=es_ES&amp;fs=1&amp;">
    <param name="allowFullScreen" value="true">
    <param name="allowscriptaccess" value="always"><param name="wmode" value="transparent">
    <embed src="http://www.youtube.com/v/6Nt391Y6ZeI?f=user_uploads&amp;app=youtube_gdata&amp;hl=es_ES&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="transparent" width="304" height="182">
    </object>'
;
}
</script>
</head>

<body>
<div id="player"></div>
</body>
</html> 
Pero, si en cambio usás esto, no obtendrás ningún error y el resultado será el esperado:
Código PHP:
<?php  
function js_encode($s){ 
    
$texto=''
    
$lon=strlen($s); 
    for(
$i=0;$i<$lon;++$i){ 
        
$num=ord($s[$i]); 
        if(
$num<16$texto.='\x0'.dechex($num); 
        else 
$texto.='\x'.dechex($num); 
    } 
    return 
$texto

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin título</title>
<script>
onload=function(){
    document.getElementById('player').innerHTML='<?php echo  js_encode('<object width="304" height="182">
    <param name="movie" value="http://www.youtube.com/v/6Nt391Y6ZeI?f=user_uploads&amp;app=youtube_gdata&amp;hl=es_ES&amp;fs=1&amp;">
    <param name="allowFullScreen" value="true">
    <param name="allowscriptaccess" value="always"><param name="wmode" value="transparent">
    <embed src="http://www.youtube.com/v/6Nt391Y6ZeI?f=user_uploads&amp;app=youtube_gdata&amp;hl=es_ES&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="transparent" width="304" height="182">
    </object>'
?>';
}
</script>
</head>

<body>
<div id="player"></div>
</body>
</html>

Última edición por Panino5001; 25/04/2010 a las 06:50 Razón: aclarar