2010-02-23 6 views
6

¿Alguien me puede aclarar por qué el siguiente código no funcionará en IE7 pero funciona bien en Chrome/Firefox?jQuery Problema AJAX en IE7 (posiblemente otras versiones también)

$(document).ready(function(){ 
    $.ajax({ 
    type: "POST", 
    dataType: "text", 
    cache: false, 
    url: "/ajax/ajax.asp", 
    data: "cmd=check_forfeits", 
    success: function(msg) { 
     return false; 
    } 
    }); 
}); 

El error de JavaScript IE lanza es 'Permiso denegado'

Si quito ese trozo de código del archivo JS de la página en cuestión la página funciona bien, no hay errores, por lo que el error radica en ese pedazo de código, creo.

::: ::: ACTUALIZACIÓN

otra cosa que es un poco extraño es que cuando actualice la página (en IE7) consigo no hay errores de javascript y este código parece funcionar correctamente. Por lo tanto, es como si la primera vez que la página cargara estos fragmentos de código, se ejecutara correctamente.

::: ::: ACTUALIZACIÓN

Éstos son los mensajes violinista de esta página de Internet Explorer 7:

# Result Protocol Host     URL 
1 200  HTTP  192.168.47.13:8000 /
2 304  HTTP  192.168.47.13:8000 /js/jquery-1.4.1.js 
3 200  HTTP  192.168.47.13:8000 /js/index.js 
4 304  HTTP  192.168.47.13:8000 /js/jquery-1.4.1.js 
5 200  HTTP  192.168.47.13:8000 /js/index.js 
6 304  HTTP  192.168.47.13:8000 /css/main.css 
7 304  HTTP  192.168.47.13:8000 /css/grid.css 
8 304  HTTP  192.168.47.13:8000 /images/banner.jpg 

Éstos son los mensajes violinista de esta página de Firefox:

# Result Protocol Host     URL 
1 200  HTTP  192.168.47.13:8000 /
2 304  HTTP  192.168.47.13:8000 /js/jquery-1.4.1.js 
3 304  HTTP  192.168.47.13:8000 /js/index.js 
4 304  HTTP  192.168.47.13:8000 /css/grid.css 
5 304  HTTP  192.168.47.13:8000 /css/main.css 
6 304  HTTP  192.168.47.13:8000 /images/banner.jpg 
7 200  HTTP  192.168.47.13:8000 /ajax/ajax.asp 
+1

Fwiw, la opción de caché es 'caché' no 'caché', aunque dudo que rompería la llamada. – BBonifield

+0

+1 buena captura. Solucionado esto, pero como dijiste ... no fue el factor decisivo. – Ryan

+0

¿Eres capaz de instanciar un XMLHttpRequest ordinario en su máquina? Pruebe 'xhr = XMLHttpRequest? nuevo XMLHttpRequest(): nuevo ActiveXObject ("MSXML2.XMLHTTP"); 'y vea si obtiene el mismo error. –

Respuesta

2

me encontré con el mismo problema.

Hice un buen trabajo para resolver el problema. Escribí el código para hacer la llamada ajax sin usar jQuery (creado XMLHttpObject, onreadystatechange, etc.). Luego usé jQuery para analizar el XML.

Por alguna razón, el ajax de jQuery no funciona bien con IE7.

Realmente no obtiene un error en IE7, pero si lo depura, verá que el servidor nunca se golpea y que el código nunca llega al bloque de éxito.

0

más reciente editar

Encontré algunas charlas sobre esto aquí: http://zacster.blogspot.com/2008/10/jquery-ie7-load-url-problem.html y otros lugares. Parece que el problema tiene que ver con la caché IE7. Si realiza la URL única que podría solucionar el problema (por ejemplo, añadir un TimeNow = 09472345 hasta el final de la cadena de la solicitud.)

respuesta inicial

¿Estás seguro de que el nombre es .asp? Yo esperaría a ver .aspx o alguna otra extensión manejado por .NET Si esto es lo que se necesita entonces es probable que tenga para permitir .asp en IIS

luego leí la pregunta de nuevo

veo que funciona en otros navegadores, por lo que no puede ser mi comentario original ... descarga el violín y observa cómo la solicitud es diferente de IE y otros navegadores.

http://www.fiddler2.com/fiddler2/

+0

Después de comparar las publicaciones realizadas tanto en IE7 como en Firefox, la única diferencia es que Firefox tiene una publicación adicional ... la publicación en /ajax/ajax.asp ... esa publicación nunca se hace en IE7 ... probablemente debido a la ' Permiso denegado 'error. – Ryan

+0

¿Cuáles son las publicaciones anteriores? Además, ¿tiene un DC? Puede ser que IE esté usando la autenticación de Windows y el otro no; usted tiene derechos como usuario que no es de Windows, pero su nombre de dominio no tiene derechos. – Hogan

+0

He editado mi publicación original anterior para incluir los registros de violín para los dos navegadores. – Ryan

0

Tuve un problema con la llamada AJAX en jQuery en IE7 también. Descubrí cuál era mi problema y no estoy seguro si está relacionado con el tuyo o no.

no estaba poniendo el protocolo de la URL y tenía barras adicionales en IE 7 como esto:

//www.mywebsite.com/products//json.php

que funciona en todas partes, además de shIEt

Una vez que agregué el protocolo y quité las barras adicionales, todo funcionó bien.

8

si las personas encuentran esta página porque están experimentando el mismo error - Acabo de encontrar otra causa/solución para IE7 que falla con este error de "PERMISIÓN DENEGADO" y logra una actualización.

Asegúrese de que si usted está usando esto en su etiqueta <head>:

<meta http-equiv="content-type" content="text/html;charset=utf-8" /> 

Tenga en cuenta que lo hace no tiene ningún mayúsculas o un espacio después del ";". Nuestro sitio tenía esta versión:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

y eso causaba el mismo comportamiento al hacer llamadas AJAX.

Esperemos que esto ayude a otra persona, porque acabamos de pasar alrededor de 6 horas entendiendo esto.

0

Algo inapropiado podría estar en su página, la razón por la que encontré este problema es que utilizo el document.write("<style></style") cuando uso la API de JqueryTool en la misma página.

0

hay una línea en jQuery 1.9.1 que tampoco utiliza después, pero el que se emite una excepción: línea de 2582, la columna 4 en jquery-1.9.1.js

esto sucede solamente para IE7 y IE8 o superior no y deja de cargar el resto de las cosas de jquery. utilizando el modo de compatibilidad de Internet Explorer 7 en IE9 me encontré con la línea de código que lanza la excepción continuación descomentado en jquery1.9.1 de la siguiente manera:

// IE6/7 do not support getting/setting some attributes with get/setAttribute 
if (!getSetAttribute) { 

    // Use this for any attribute in IE6/7 
    // This fixes almost every IE6/7 issue 
    nodeHook = jQuery.valHooks.button = { 
     get: function(elem, name) { 
      var ret = elem.getAttributeNode(name); 
      return ret && (name === "id" || name === "name" || name === "coords" ? ret.value !== "" : ret.specified) ? 
       ret.value : 
       undefined; 
     }, 
     set: function(elem, value, name) { 
      // Set the existing or create a new attribute node 
      var ret = elem.getAttributeNode(name); 
      if (!ret) { 
       elem.setAttributeNode(
        (ret = elem.ownerDocument.createAttribute(name)) 
       ); 
      } 

      //LB - 19/04/2013 - removed for IE7 compatibility. 
      //ret.value = value += ""; 

      // Break association with cloned elements by also using setAttribute (#9646) 
      return name === "value" || value === elem.getAttribute(name) ? 
       value : 
       undefined; 
     } 
    }; 
Cuestiones relacionadas