2011-07-21 11 views
0

10分ごとに更新するデスクトップガジェットを作成しています(ここでは10秒です)。私が決めたことは、setTimeoutを実行するたびにXMLが再びロードされないということです。Javascript自動新鮮なXMLHttpRequestの問題

これはどのような問題かわかりません。オブジェクトがnullに設定されていることを確認しましたが、再初期化は行われず、空のXMLオブジェクトが残っています。 SJAX(同期アヤックス)で

setTimeout("bg_load();getXML()",10000); 

function getXML() 
{     
    stat = readSetting(); 
    url = "http://www.weather.gov/xml/current_obs/" + stat[0] + ".xml" 

    rssObj = new XMLHttpRequest(); 
    rssObj.open("GET", url, false); 
    rssObj.onreadystatechange = function() { 
    if (rssObj.readyState === 4) { 
     if (rssObj.status === 200) {  
      document.getElementById("gadgetContent").innerHTML = "";  
      rssXML = rssObj.responseXML; 
     } else { 
      var chkConn; 
      document.getElementById("gadgetContent").innerHTML = "Unable to connect...";     
     } 
    } else { 
     document.getElementById("gadgetContent").innerHTML = "Connecting..."; 
     } 
    } 
    rssObj.send(null); 

getImage(rssXML); 
getText(rssXML); 

rssObj = null; rssXML = null; 
} 

答えて

0

、あなたは「onreadystatechangeに」を使用してはならない、とのコードで、あなたが送った後XMLHttpRequestから直接応答テキストを引きます。

onreadystatechangeに使用しないでください:外responseTextの引き上げ https://developer.mozilla.org/en/xmlhttprequest#onreadystatechange

例:http://www.hunlock.com/blogs/Snippets:_Synchronous_AJAX

+0

を、同期呼び出しでの問題は、サーバが応答するまでに長い時間がかかる場合には、ユーザーのブラウザをロックすることができますです。楽しいもの! – epascarello

+0

ありがとうございました。私は自分でこれを考え出すことは決してできませんでした。 – Eric

関連する問題