1

我有以下代码适用于除 IE 之外的所有浏览器:我被拒绝访问。请帮忙!!!我已经看了很多例子,但仍然无法解决这个问题。我想保持简单,因为我所做的只是从 URL 返回一些文本。

<script type="text/javascript">
    // Insure the document is loaded...
    $(document).ready(function() {

        // Set the URL for the POS API...
        var PosApiUrl = 'https://test.safety.com/posapi/getposmessage?app=RMIS';


        // Load the POS API Message...
        function loadPOSMessage(edurl) {

            if (window.XMLHttpRequest) {
                xmlhttp = new XMLHttpRequest();
            } else if (window.XDomainRequest) {
                xmlhttp = new XDomainRequest();
            } else {
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange = function() {
                if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                    var jsonEdition = xmlhttp.responseText;
                    var objEdition = JSON.parse(jsonEdition);
                    $.each(objEdition, function(key, val) {
                        if (val.length === 0) {
                            $('.posMsgContainer').hide();
                        } else {
                            $('.posMsgContainer').html(val);
                        }


                    });
                }
            };
            xmlhttp.open("GET", edurl, true);
            xmlhttp.send();
        }

        // Make the call to load the POS message...
        loadPOSMessage(PosApiUrl);


    });
  </script>
4

1 回答 1

0

上面的代码不起作用,因为 IE 的 XDomainRequest 的 API 与 XMLHttpRequest 的 API 略有不同。例如,它使用 onload() 代替 onreadystatechange()。

我发现在 IE 8/9 上支持 CORS 的最简单方法是从此处包含 xhr-xdr-adapter.js 文件: https ://github.com/intuit/xhr-xdr-adapter/blob/master /src/xhr-xdr-adapter.js

您可以在需要的地方包含它,如下所示:

<!--[if lt IE 10]>
<script src="xhr-xdr-adapter.js" type="text/javascript"></script>
<![endif]-->

一旦你包含了 xhr-xdr-adapter,你就可以使用标准的 XMLHttpRequest API,而不必担心你是否在 IE 8/9 上运行(只要你不需要做一些花哨的事情,比如发送自定义标头,或使用 GET 或 POST 以外的方法。)

于 2014-08-18T22:46:13.553 回答