Foros del Web » Programando para Internet » Javascript » Frameworks JS »

ns_error_illegal value en menu

Estas en el tema de ns_error_illegal value en menu en el foro de Frameworks JS en Foros del Web. hola soy nuevo en el foro y estoy empezando con ajax asi que estoy muy verde. mi problema es que me da un error en ...
  #1 (permalink)  
Antiguo 16/06/2010, 14:57
 
Fecha de Ingreso: junio-2010
Mensajes: 124
Antigüedad: 13 años, 10 meses
Puntos: 3
ns_error_illegal value en menu

hola soy nuevo en el foro y estoy empezando con ajax asi que estoy muy verde. mi problema es que me da un error en la consola de iceweasel en un menu desplegable al que quiero mostrar su contenido via ajax. El codigo es el siguiente:

<html>
<head>
<title>Throbbing Gristle</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
var xmlhttp = false;
try{
//comprobamos si es IE
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){
xmlhttp = false;
}
}
if(!xmlhttp && typeof XMLHttpRequest != 'undefined'){
xmlhttp = new XMLHttpRequest();
}
function procesarRespuesta(){
var menu = document.getElementById("menu");
var capa = document.getElementById("texto");
capa.innerHTML="Cargando los datos...";
xmlhttp.open("GET", menu.value, true);
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
capa.innerHTML = xmlhttp.responseText;
}
}
xmlhttp.send(null);
}
var result;
function obtenerid(dentrodeque){
frase=document.getElementById(dentrodeque).innerHT ML;
result=new Array();
result=frase.match(/\b\s+id=[^>\s]+\b/g);
for(ii=0;ii<result.length;ii++){
result[ii]=result[ii].split('"').join('');
result[ii]=result[ii].split('id=').join('');
result[ii]=result[ii].split(' ').join('');
}
}
function mostrar(que){
for(ii=0;ii<result.length;ii++){
if(que==result[ii]){
if(document.getElementById(que).style.display=='no ne'){document.getElementById(que).style.display='b lock';}else{document.getElementById(que).style.dis play='none';}
}else{
eval("document.getElementById('"+result[ii]+"').style.display='none'");
}
}
}
</script>
<style type="text/css">
.principal{
background-color: #FFFFFF;
border-color: #FF0000;
border-style: solid;
border-width: 1px;
color: #FF0000;
font-weight: bold;
margin: 4px;
padding: 4px;
text-align: center;
cursor: pointer;
cursor: hand;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
}
.secundario{
background-color: #FFFFFF;
border-color: #000000;
border-style: solid;
border-width: 1px;
color: #000000;
font-weight: bold;
margin: 4px;
padding: 4px;
text-align: center;
cursor: pointer;
cursor: hand;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
}
</style>
</head>

<body bgcolor="#9999CC" onload="obtenerid('menu')">
<div id="menu" name="contenedor_menu" style="width:100px;">
<!-- inicio menu 1-->
<div class="principal" onclick="mostrar('uno')">seccion uno</div>
<div id="uno" style="display:none;">
<div value="pagina1.html" class="secundario" onclick="procesarRespuesta();">sub 1 1</div>
<div value="pagina2.html" class="secundario" onclick="procesarRespuesta();">sub 1 2</div>
<div value="pagina3.html" class="secundario" onclick="procesarRespuesta();">sub 1 3</div>
</div>
<!--fin menu 1-->
<!--inicio menu 2-->
<div class="principal" onclick="mostrar('dos')">seccion dos</div>
<div id="dos" style="display:none;">
<div class="secundario" onclick="procesarRespuesta();">sub 2 1</div>
<div class="secundario" onclick="procesarRespuesta();">sub 2 2</div>
<div class="secundario" onclick="procesarRespuesta();">sub 2 3</div>
</div>
<!--fin menu 2-->
<!--inicio menu 3-->
<div class="principal" onclick="mostrar('tres')">seccion tres</div>
<div id="tres" style="display:none;">
<div class="secundario" onclick="procesarRespuesta();">sub 3 1</div>
<div class="secundario" onclick="procesarRespuesta();">sub 3 2</div>
<div class="secundario" onclick="procesarRespuesta();">sub 3 3</div>
</div>
<!--fin menu 3-->
</div>


<div id="texto" name="texto" width=”500” height=”400”></div>

</body>
</html>


el error que me lanza la consola es el siguiente:

Error: uncaught exception: [Exception... "Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIXMLHttpRequest.open]" nsresult: "0x80070057 (NS_ERROR_ILLEGAL_VALUE)" location: "JS frame :: http://www.throbbinggristle.com/ :: procesarRespuesta :: line 24" data: no]

Estoy probando primeramente con los 3 primeros submenus poniendole valuescon paginas de prueba...

Agradeceria un pequeño empujon muchas gracias de antemano!
  #2 (permalink)  
Antiguo 16/06/2010, 17:53
 
Fecha de Ingreso: junio-2010
Mensajes: 124
Antigüedad: 13 años, 10 meses
Puntos: 3
Respuesta: ns_error_illegal value en menu

nadie me puede echar un cabo???
  #3 (permalink)  
Antiguo 17/06/2010, 07:55
 
Fecha de Ingreso: junio-2010
Mensajes: 124
Antigüedad: 13 años, 10 meses
Puntos: 3
Respuesta: ns_error_illegal value en menu

nadie puede ayudarme a resolver este problema por el cual no obtengo respuesta ajax?
  #4 (permalink)  
Antiguo 17/06/2010, 08:49
Avatar de Tecna  
Fecha de Ingreso: enero-2010
Mensajes: 291
Antigüedad: 14 años, 3 meses
Puntos: 45
Respuesta: ns_error_illegal value en menu

Buenas,

yo diría que el error está en el parámetro de la url que pasas al método open, "menu.value", en el div con id menu no has usado el atributo value pero aunque lo hubieras usado no funcionaría porque el atributo value sólo se usa en formularios, si lo comprobaras con un alert te daría "undefined".

Por otro lado con esa estructura html el menú no sería accesible sin javascript, es mejor hacer una lista desordenada de enlaces y en el atributo href poner la url de la página estática a la que se hará la consulta ajax y desde javascript cancelar el evento y la acción predeterminada de seguir el enlace y hacer la petición ajax obteniendo la url con this.href por ejemplo.

Etiquetas: ajax
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 22:17.