2011-08-24 8 views
6

Tengo un sitio de php que funciona bien en Firefox y Chrome, pero se rompe completamente en IE.SCRIPT 600 Error: elemento de destino no válido para esta operación

Aquí está uno de los scripts que arroja un error ... SCRIPT600: Elemento de destino no válido para esta operación.

function loadDeals() { 
    $.get("modules/recommendations/viewrecommendations.php",{},function(response){ 
     document.getElementById("dealdata").innerHTML = response; 
    }); 
} 

Se lanza el error en la línea que establece el innerHTML ... ¿Alguna idea por qué ocurre esto?

+2

¿Cuál es el elemento con id 'dealdata'? – Paulpro

+3

Si ya usa jQuery, ¿por qué no también para eso? '$ ('# dealdata'). html (respuesta)'. –

+0

Es un elemento tbody. –

Respuesta

3

Prueba esto: ¿estás usando jquery?

se ve también como que tiene un conjunto adicional de paréntesis en allí (creo que entre ,{},)

function loadDeals() { 
    $.get("modules/recommendations/viewrecommendations.php",function(response){ 
     $("#dealdata").html(response); 
    }); 
} 
+0

El '{}' solo está enviando un objeto en blanco como parámetros GET, no debería romper nada. –

+0

pero es innecesario http://api.jquery.com/jQuery.get/ –

+0

No sabía que, aunque es bueno saberlo para futuras depuraciones. –

12

IE tiene un problema de reemplazar el contenido TBODY con innerHTML. El jQuery dado arriba funciona; si no está utilizando jQuery, otra solución es tener un <div id='helper' style='visibility:hidden'/> en algún lugar de la página: cuando llegue la respuesta, coloque el valor con una etiqueta <table> en el div oculto, luego use el DOM para eliminar el contenido anterior de su etiqueta visible e inserte los elementos de la etiqueta oculta 1 por 1:

var a=document.getElementById("dealdata"); 

while(a.firstChild!=null) 
    a.removeChild(a.firstChild); 

var b=document.getElementById("helper"); 
b.innerHTML="<table>"+this.responseText+"</table>"; 
while(b.tagName!="TR") { 
    if(b.tagName==null) 
    b=b.nextSibling; 
    else 
    b=b.firstChild; 
} 
for(;b!=null;b=b.nextSibling) 
    a.appendChild(b); 
+0

Para todos: Si está ejecutando este error en ASP.NET MVC con "Ajax.BeginForm", lo más probable es que "UpdateTargetId" sea una tabla. Agregue un DIV circundante y cambie el "UpdateTargetId" en consecuencia. – Alex

Cuestiones relacionadas