2013-11-21 75 views
0

我一直很难找到一个好的解决方案。我有一个旨在为网站提供辅助服务的子域。喜欢暗示性的销售等,我已经创建了一个代码,将提交一个阿贾克斯后跟踪。第二个Ajax调用将抓取HTML,并将其发布到一个div。这适用于IE10,Chrome,Safari和Firefox。但在IE 7-9中不起作用。跨域Ajax调用子域IE7 +

我发现很多帖子,那半解释一个解决方案。但似乎没有为我工作。有没有人有处理这方面的经验?非常感谢帮助。

// TRACKER 
function log() { 
$.ajax({url:"http://sub.differentdomain.com/in/li/", dataType:"html", type:"POST", cache:false, timeout:1000, data:{item:"ITEM1", session:"SESSIONKEY"}}); 
} 

// DISPLAYER 
function getTools() { 
$.ajax({url:"http://sub.differentdomain.com/out/sug/", dataType:"html", type:"POST", cache:false, timeout:6000, crossDomain:true, async:false, beforeSend:function() { 
$("#ccont #selling-tools").html('<div class="boxset" style="width:95%; margin:20px 2%;padding:20px 0.5%; margin-bottom:0;"><img src="loader.gif" align="center" /></div>').show(); 
}, error:function() { 
$("#ccont #selling-tools").html(""); 
}, data:{item:"ITEM1", session:"KEY1"}}).done(function(html) { 
$("#selling-tools").html(html); 
}); 
} 

上实现同样的结果也将做任何其他的建议...

+0

也许这可以帮助你http://stackoverflow.com/questions/11487216/cors-with-jquery-and-xdomainrequest-in-ie8-9 – ncubica

回答

1

尝试启用IE浏览器CORS这个脚本,你阿贾克斯之前打电话给你的使用jQuery

if (window.XDomainRequest) { 
    jQuery.ajaxTransport(function(s) { 
     if (s.crossDomain && s.async) { 
      if (s.timeout) { 
       s.xdrTimeout = s.timeout; 
       delete s.timeout; 
      } 
      var xdr; 
      return { 
       send: function(_, complete) { 
        function callback(status, statusText, responses, responseHeaders) { 
         xdr.onload = xdr.onerror = xdr.ontimeout = jQuery.noop; 
         xdr = undefined; 
         complete(status, statusText, responses, responseHeaders); 
        } 
        xdr = new XDomainRequest(); 
        xdr.onload = function() { 
         callback(200, "OK", { text: xdr.responseText }, "Content-Type: " + xdr.contentType); 
        }; 
        xdr.onerror = function() { 
         callback(404, "Not Found"); 
        }; 
        xdr.onprogress = jQuery.noop; 
        xdr.ontimeout = function() { 
         callback(0, "timeout"); 
        }; 
        xdr.timeout = s.xdrTimeout || Number.MAX_VALUE; 
        xdr.open(s.type, s.url); 
        xdr.send((s.hasContent && s.data) || null); 
       }, 
       abort: function() { 
        if (xdr) { 
         xdr.onerror = jQuery.noop; 
         xdr.abort(); 
        } 
       } 
      }; 
     } 
    }); 
} 
+0

谢谢!有效。我注意到它没有通过POST信息,但仍然让请求发生。我写了一个小脚本来切换到GET请求。再次感谢。简单的答案... – RichardW11