2012-02-07 24 views
0

我使用Chrome來調試我的網站。不過,有時我想出了這樣一個錯誤:如何調試jQuery AJAX

錯誤

Uncaught TypeError: Cannot set property 'display' of undefined 

堆棧跟蹤

f.extend.ajax 
ClassLoader.performLoadWave 

所以,我知道這是什麼東西在我的Ajax調用,可能在我的成功功能。但是,我的成功功能要求很多東西。

我真的沒有找人幫我調試我的代碼,只是問我該如何調試。我使用了很多console.log();但他們不是很有用,我怎麼才能找到像這樣的錯誤?

編輯

要添加到我的問題,在這個例子中,錯誤的是在得到我的AJAX調用加載的文件,因爲該數據類型設置爲「腳本」,但我怎麼能知道這無需挖掘幾個小時?


代碼

對於任何人,關心我的代碼,這就是:

$.ajax({ 
    url: filePath, 
    async: false, 
    cache: !Settings.debugging, 
    dataType: 'script', 
    error: function(httpRequest, message, errorThrown){ 
     if(errorThrown == 'Not Found') 
     { 
      throw 'Include cannot be found.'; 
     } 
     else 
     { 
      throw errorThrown + ': ' + (message == 'parsererror' ? 'This doesn\'t look like JavaScript!' : message); 
     } 
    }, 
    success: function(){ 

     $.each(newNeedsLoading, function(index, element){ 

      if(element !== undefined) 
      { 

       var className = element.className; 
       if(window[className] && window[className]['included']) 
       { 
        window[className]['included'](); 
       } 

       className = 'Plugin_' + element.className; 
       if(window[className] && window[className]['included']) 
       { 
        window[className]['included'](); 
       } 

       className = 'Plugin_Administration_' + element.className; 
       if(window[className] && window[className]['included']) 
       { 
        window[className]['included'](); 
       } 

       if(element.completed) 
       { 
        element.completed(); 
       } 

      } 

     }); 

     ClassLoader.isLoading = false; 

    } 
}); 
+1

可能重複/stackoverflow.com/questions/690781/debugging-scripts-added-via-jquery-getscript-function) – jValdron 2012-02-07 18:46:59

+1

查看重複內容,我剛剛在我的$ .ajax調用中添加了crossDomain:true,現在可以正確調試。 – jValdron 2012-02-07 18:48:04

回答

0

您是否嘗試過使用Firebug?您可以查看各個AJAX請求,包括您發送的參數以及通過CONSOLE標籤從服務器返回的響應。

http://getfirebug.com/releases/lite/chrome/

在控制檯選項卡中,你應該右擊並選擇要登錄的XMLHttpRequest。然後,您可以使用「網絡」選項卡查看每個請求加載的各個項目。 「標題」面板將顯示您的參數。 「預覽」面板將顯示您的預覽。 「響應」面板將向您顯示從您的服務器返回的錯誤或成功與您返回的任何數據。

+0

從網站上,它說「JavaScript調試器不可用」 – jValdron 2012-02-07 18:42:52

0

Chrome還可以選擇記錄http請求,開發人員工具中的網絡選項卡非常有用。

0

您可以在您的javascript的success函數(或error或以前)中設置斷點。 有關信息和瀏覽器教程,請參閱Chrome Developer Tools: Breakpoints。在你的情況下,請特別注意Breakpoints on XHR

當您點擊中斷點時,您可以查看範圍內的任何變量的值。您還可以使用JavaScript控制檯輸入任何javascript,並且它將在當前範圍內執行。

正如@cockroachbill所說,您還可以查看網絡選項卡以查看所有流量,包括XHR(XMLHttpRequest)以及返回的內容。我特別喜歡預覽標籤。