Tengo un iframe usando el script jQuery 1.4.2. El mismo iframe se inyecta en los sitios http y https . El script jQuery se incluye en el archivo HTML principal como una ruta relativa (p. ej., /scripts/jquery-1.4.2.min.js).
Cuando se realiza una llamada AJAX, Internet Explorer niega el acceso. AJAX está llamando a otro subdominio, pero está usando el protocolo correcto. Todos los demás navegadores funcionan, pero Internet Explorer da el siguiente error:
SCRIPT5: Acceso denegado.
jquery-1.4.2.min.js, línea 127 carácter 344
Escuché que este error proviene de llamadas AJAX entre dominios. Pero, ¿por qué IE es el único que me da una mierda? ¿Hay una solución de IE?
Además, este es mi AJAX:
$.ajax({ url: thisURL, dataType: "json", data: {cmd : 'getMessage', uurl: urlVar, t: Math.random()}, success: function(ret){ callback(ret) } });IE requiere que use XDomainRequest en lugar de XHR para sitios cruzados, puede intentar algo como...
if ($.browser.msie && window.XDomainRequest) { // Use Microsoft XDR var xdr = new XDomainRequest(); xdr.open("get", url); xdr.onload = function() { // XDomainRequest doesn't provide responseXml, so if you need it: var dom = new ActiveXObject("Microsoft.XMLDOM"); dom.async = false; dom.loadXML(xdr.responseText); }; xdr.send(); } else { // your ajax request here $$.ajax({ url: thisURL, dataType: "json", data: {cmd : 'getMessage', uurl: urlVar, t: Math.random()}, success: function(ret){ callback(ret) } }); }Referencia
http://forum.jquery.com/topic/cross-domain-ajax-and-ie
no estoy seguro de si se ajusta a su escenario
xdr = new XDomainRequest(); xdr.onload=function() { alert(xdr.responseText); } xdr.open("GET", thisUrl); //thisURl ->your cross domain request URL //pass your data here xdr.send([data]);puede encontrar más orientación aquí
Esto resolvió el problema con gracia para mí:
https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest
Simplemente instale/compile después de jQuery y antes de su secuencia de comandos y use el método $.ajax como lo haría normalmente, el resto se maneja automáticamente.
¿Has intentado usar la última versión de JQuery (> jquery-1.8.0)? Desde la versión 1.8.0, solucionaron algunos errores de IE9. Quizás este también.