2013-03-20 53 views
0

我有幾個使用AS 1/2的基於xml數據的狀態映射的swf。這工作了很多年,但現在xml文件已經更新。 swfs不會加載新的信息。這就像他們曾經做過的一樣,它現在已經成了石頭。我搜索了一個星期,並嘗試了幾個緩存破壞者,但都沒有工作。我嘗試過的大部分事情都是基於向xml加載語句添加日期/時間戳。這些要麼沒有效果,要麼破壞申請。 下面的代碼:swf not loading更新的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); 
} 
} 

感謝您的幫助, 黛比

回答

0

你需要知道的三兩件事。

首先,您需要確保您正在加載SWF文件的最新版本以引用新的xml。只需更改文件名或在swf擴展的末尾添加緩存查詢器查詢,例如map.swf?vers = 2

其次,您需要檢查Flash文件是否實際檢索已更新的正確和新的XML文件。

最後,我知道這聽起來很愚蠢,但在瀏覽器中打開XML文件並確認它是正確的。例如,直接查看www.mydomain.com/dplaws.xml。我在服務器上的文件不是最新的或服務器本身正在緩存文件的情況下發生了不少事件。至少在後者中,您可以將其隔離爲服務器的問題。

直接檢查XML文件,例如www.mydomain.com/dplaws.xml並添加一個查詢結束如(這可以是任何東西)www.mydomain.com/dplaws.xml?cache=test9393。附加查詢後,它應該從服務器獲取最新版本。

現在,一旦確認上述內容,請使用Chrome並打開Developer Tools。轉到Network Tab並檢查您的閃存是否使用最新的版本。您可以看到,一旦SWF加載了下一個查詢之一,就應該是XML文件。查看它是否引用了新的XML並附加了緩存查詢器查詢。

當我按照上面的步驟,它一般適用於我。我希望它也能幫助你。

+0

我已經確定xml的唯一副本是新版本;但是當我嘗試向我的AS添加?vers = 2時,出現無法找到url的錯誤。 – user1712754 2013-03-20 10:45:47

+0

有沒有機會給我們提供鏈接?這將使我們能夠更好地幫助你解決這個問題。 – jnpWebDeveloper 2013-03-20 11:06:48

+0

謝謝你的要求,請求鏈接。我一直在製作本地的本地副本。當我剛剛調用服務器站點來爲您複製網址時,我意識到我可能實際上沒有緩存問題。注意到本地和服務器副本之間的差異,它看起來像在加載xml文件之前着色的地圖...顯示以u,v和w開頭的狀態的不正確數據。感謝您幫助我確定正確的問題。至少我明白爲什麼一個星期處理緩存問題並沒有好處。 – user1712754 2013-03-20 11:34:34