0

AS 1/2 を使用して xml データに基づいて状態マップに色を付ける swfs がいくつかあります。これは数年間うまくいきましたが、現在xmlファイルが更新されています。swfs は新しい情報をロードしません。彼らはかつてそれをやったようで、今では石になっています。1 週間検索して、いくつかのキャッシュ バスターを試しましたが、どれも機能しませんでした。私が試したことのほとんどは、日付/時刻スタンプを xml ロード ステートメントに追加することに基づいていました。これらは効果がないか、アプリケーションを壊しました。コードは次のとおりです。

var dp = new Array();
dp_xml = new XML();
dp_xml.ignoreWhite = true;
dp_xml.load('dplaws.xml');
dp_xml.onLoad = function(sucess) {
        if (sucess) {
                parseFile(dp_xml);
                showArray();
        }
};



function Map(state, category, qid, question, response) {
        this.state = state;
        this.category = category;
        this.qid = qid;
        this.question = question;
        this.response = response;

        if((substring(response,1,3)=="Yes") && (qid == "b")) {
            myColor = new Color(state);
            myColor.setRGB(0xA2B5CD);
        } else if((substring(response,1,3)!="Yes") && (qid == "b")) {
            myColor = new Color(state);
            myColor.setRGB(0xcccccc);
        }
}


function parseFile(xmlDoc_xml) {
        temp = new Array();
        for (var a = 0; a<xmlDoc_xml.firstChild.childNodes.length; a++) {
                for (var b = 0; b<xmlDoc_xml.firstChild.firstChild.childNodes.length; b++) {
                        temp[b] = xmlDoc_xml.firstChild.childNodes[a].childNodes[b].firstChild.nodeValue;
                }
                n = new Map(temp[0], temp[1], temp[2], temp[3], temp[4]);
                dp.push(n);
        }
}


function showArray(){
for (var z = 0; z<dp.length; z++) {
        trace(dp[z].state);
        trace(dp[z].category);
        trace(dp[z].question);
        trace(dp[z].response);
        trace(dp[z].qid);
}
}

助けてくれてありがとう、デビー

4

1 に答える 1

0

3つのことを意識する必要があります。

最初に、SWF ファイルの最新バージョンをロードして、新しい xml を参照していることを確認する必要があります。ファイル名を変更するか、 map.swf?vers=2のように swf 拡張子の末尾にキャッシュ無効化クエリを追加するだけです。

次に、フラッシュ ファイルが、更新された正しい新しい XML ファイルを実際に取得していることを確認する必要があります。

最後に、これがばかげているように聞こえるかもしれませんが、ブラウザーで XML ファイルを開いて、正しいファイルであることを確認してください。たとえば、www.mydomain.com/dplaws.xmlなどで直接表示します。サーバー上のファイルが最新でなかったり、サーバー自体がファイルをキャッシュしていたり​​することがかなりありました。少なくとも後者では、サーバーの問題であることを特定できます。

www.mydomain.com/dplaws.xmlなどの XML ファイルを直接確認し、ここ (何でもかまいません) www.mydomain.com/dplaws.xml?cache=test9393のように終了するクエリを追加します。クエリを追加すると、サーバーから最新バージョンを取得する必要があります。

上記を確認したら、Chrome を使用してDeveloper Toolsを開きます。[ネットワーク] タブに移動し、フラッシュが最新バージョンを使用しているかどうかを確認します。SWF が読み込まれると、次のクエリの 1 つが XML ファイルであることがわかります。新しい XML を参照しており、キャッシュ無効化クエリが追加されているかどうかを確認してください。

上記の手順に従うと、通常はうまくいきます。それがあなたにも役立つことを願っています。

于 2013-03-20T10:26:02.603 に答える