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 で返されるものを global またはとして宣言できる必要があります。そんな感じ。

例: 最後の行 $j('#result').html(urlToOpen) は、"urlToOpen" の値を割り当てるふりをしていますが、これは機能しません。どうすればこれを達成できますか?

4

2 に答える 2

0

解決策:「xdr.onload」は非同期で実行されるため、問題は、この変数が空のときにコード$ j('#result')。html(urlToOpen)で変数「urlToOpen」を使用しようとしたことでした。 「xdr.onload」の読み込みが完了していなかったため、「xdr.onload」関数内にコード$ j('#result')。html(urlToOpen)を配置しました。それは最高ではありませんが、うまくいきました。

于 2012-11-29T23:48:47.223 に答える
0

ここでの簡単な答えはvar、 xdr から remove を使用することであり、グローバル オブジェクトのプロパティになります。その後、どこからでもアクセスできるようになります。

競合しないように名前空間も設定するので、 のような名前を付けmyApp_xdrます。

これが役立つことを願っています。

于 2012-11-17T21:26:07.610 に答える