在函数“load”之外使用XDomainRequest的响应

时间:2012-11-17 21:19:59

标签: javascript xdomainrequest

我正在以这种方式使用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”的值,但这不起作用。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

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

我也会命名空间它所以它不会发生冲突,所以将其命名为myApp_xdr

我希望这会有所帮助。

答案 1 :(得分:0)

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