0

我正在以这种方式使用 XDomainRequest 对 IE 进行跨域请求:

<div id="result"></div>

<script type="text/javascript">
var urlToOpen;
var openxUrl = "http://DOMAIN.com/www/delivery/apu.php";
if ($j.browser.msie && window.XDomainRequest) {
        // Use Microsoft XDR
        var xdr = new XDomainRequest();
        xdr.open("get", openxUrl);
        xdr.onload = function() {
            urlToOpen  = xdr.responseText;
        };

        xdr.send();
    }

$j('#result').html(urlToOpen)
</script>

代码返回正确的值,但我想在其他函数中使用Ajax返回的值(不仅在xdr.onload的函数内部),所以我需要xdr.responseText返回的内容可以声明为全局或类似的东西。

示例:最后一行 $j('#result').html(urlToOpen) 假装分配了“urlToOpen”的值,但这不起作用。我怎样才能做到这一点?

4

2 回答 2

0

这里的简单答案是使用var从 xdr 中删除,然后它成为全局对象的属性。然后,您将能够在任何地方访问它。

我也会命名它,这样它就不会冲突,所以将它命名为myApp_xdr.

我希望这有帮助。

于 2012-11-17T21:26:07.610 回答
0

解决方案:由于“xdr.onload”以异步方式运行,问题是我尝试在代码 $j('#result').html(urlToOpen) 中使用变量“urlToOpen”,而该变量为空,因为“xdr.onload”还没有完成加载,所以我将代码 $j('#result').html(urlToOpen) 放在“xdr.onload”函数中。这不是最好的,但有效。

于 2012-11-29T23:48:47.223 回答