2011-02-13 135 views
0

我正在寫一個小工具,它會顯示我的遊戲服務器的當前狀態。 它通過返回JSON的URL獲取其信息。一開始它運行良好。但現在它似乎陷入了AJAX的呼叫。Windows 7小工具AJAX停止工作

這是我的腳本:

function start() { 
$("body").css({ 
    height: "100px", 
    width: "130px", 
    margin: 0 
}); 

$("#refresh").click(function (event) { 
    event.preventDefault(); 
    fetch_info(); 
}); 

fetch_info(); 
}; 

function fetch_info() { 
var now = new Date(); 
var msec = now.getTime(); 
ajax = new ActiveXObject("Msxml2.XMLHTTP"); 
ajax.open("GET", "http://the.amazing.url?msec="+msec, true); 
ajax.onreadystatechange = function() { 
    if (ajax.readyState === 4) { 
     if (ajax.status === 200) { 
      var json = $.parseJSON(ajax.responseText); 
      if (json.map != "error") 
      { 
       $("#map").html(json.map); 
       $("#mode").html(json.gamemode); 
       $("#current").html(json.players); 
       $("#max").html(json.max_players); 
      } 
      else 
      { 
       $("#map").html("crashed"); 
      } 
     } else { 
      $("#map").html("error"); 
     } 
    } 
    else 
    { 
     $("#map").html("fetching data"); 
    } 
}  
ajax.send(null);  
} 

當小部件開始,則顯示「讀取數據」但之後,它偏偏不信邪。它獲得有效的JSON數據。

有誰知道爲什麼或者調試這個腳本的方法?

+0

安全問題?它確實走向了外部。也許你需要添加(再)the.amazing.url到你信任的網站 – mplungjan 2011-02-13 17:57:04

回答

0

有兩個分號錯誤。它們很可能發生在你改進腳本的過程中,並且分號移動了。 14行不需要分號,但是44行。

第14行:

44: }; 
45: ajax.send(null);  
46: } 

至於調試腳本,我使用內置的瀏覽器開發者工具就像在IE F12或開發工具在Chrome:

13:  fetch_info(); 
14: } 

44號線。當我製作小工具時,我使用基本網頁測試了所有腳本,以便可以觀看瀏覽器的JavaScript控制檯。

JSLint也有幫助。但是,在使用它時,我選擇了以下選項: 假設Windows,允許使用未使用的參數,允許缺少'use strict'雜注,允許每個函數使用許多var語句,並且允許雜亂的空白區域。否則JSLint會對你的腳本感到無所適從。希望這可以幫助。

另外,如果你有Visual Studio,你可以使用它的腳本調試器。這裏有一篇文章解釋如何:http://www.howtogeek.com/howto/windows-vista/how-to-debug-a-windows-vista-sidebar-gadget-with-visual-studio/

+0

地獄,我完全忘了我在這裏發佈這個問題。無論如何,我重寫了代碼,但是您的解決方案會起作用:)謝謝 – McFarlane 2011-08-30 10:07:35