Javascript 要在函数外部使用XDomainRequest的响应;“加载”;

Javascript 要在函数外部使用XDomainRequest的响应;“加载”;,javascript,xdomainrequest,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) { // U

我正在以以下方式使用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>

var urlToOpen;
var openxUrl=”http://DOMAIN.com/www/delivery/apu.php";
如果($j.browser.msie&&window.XDomainRequest){
//使用Microsoft XDR
var xdr=新的XDomainRequest();
xdr.open(“get”,openxUrl);
xdr.onload=函数(){
urlToOpen=xdr.responseText;
};
xdr.send();
}
$j('#result').html(urlToOpen)
代码返回正确的值,但我希望在其他函数中使用Ajax返回值(不仅在xdr.onload函数中),因此我需要将随xdr.responseText返回的内容声明为全局或类似的内容


示例:最后一行$j('#result').html(urlToOpen)假装分配“urlToOpen”的值,但这不起作用。如何实现这一点?

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

我也会给它命名名称空间,这样它就不会发生冲突,所以将它命名为类似于
myApp\uxdr


我希望这能有所帮助。

解决方案:由于“xdr.onload”是以异步方式运行的,所以问题是,当由于“xdr.onload”没有结束加载而导致变量为空时,我试图在代码$j(“#result').html(urlToOpen)中使用变量“urlToOpen”,所以我将代码$j(“#result').html(urlToOpen)放在“xdr.onload”中功能。这不是最好的,但起了作用。

不,它不起作用。我在这里复制我是如何编辑代码的。我收到警报(这意味着负载运行正常)。但“test”的值并没有打印出来,这让人觉得它并不像global那样被宣布。如果($j.browser.msie&&window.XDomainRequest){myApp_xdr=new XDomainRequest();myApp_xdr.open(“get”,openxUrl);myApp_xdr.onload=function(){test=“test”;alert(“alert worked”);};myApp_xdr.send()}$j('.#result').html(test);您做错了什么,请检查Chrome开发工具,并在运行时检查参考资料,我相信这把小提琴证明了我对您问题解决方案的观点: