2012-12-06 60 views
6

我想獲得一個JSON,託管在這裏的本地服務器,但由於某種原因它不起作用。如果我在瀏覽器上點擊我的網址,它會正確返回Json,如果我使用另一個網址,我確實會收到一些數據。如何調試ajax請求錯誤?

我原來的getJSON方法:

的getJSON:

$.getJSON(url, 

        function(data) { 
         console.log('got something'); 
         alert(data);  

        }); 

現在我想看看到底出了什麼問題。我將它重寫爲Ajax請求,並在我的錯誤回調jqxhr給了我很多我不明白的東西。我能獲得關於這個錯誤的更多細節嗎?

TextStatus"error"

errorThrownnull

$.ajax({ 
        url: url, 
        dataType: 'json', 
        success: function(data) { 
         console.log('got something'); 
         alert(data);  
         }, 
       error: function(jqxhr,textStatus,errorThrown) 
        { 
         console.log(jqxhr); 
          console.log(textStatus); 
          console.log(errorThrown);        

          for (key in jqxhr) 
           alert(key + ":" + jqxhr[key])                 
          for (key2 in textStatus) 
           alert(key + ":" + textStatus[key]) 
          for (key3 in errorThrown) 
           alert(key + ":" + errorThrown[key]) 

        //<--- All those logs/alerts, don't say anything helpful, how can I understand what error is going on? ----> 

       }}); 

末,json的我應該得到的回覆是

[{"message": "login failed"}] 

我不能使用Firebug,鉻控制檯或任何其他開發工具,因爲這是一個使用Phonegap開發的移動應用程序!

+0

是否與當前頁面位於相同域,子域和協議的URL? – devnull69

+0

使用螢火蟲或鉻的開發人員工具,並通過點擊網絡和xhr,你可以看到從url的響應 –

+0

你檢查與Firebug/Fiddler/Chrome開發工具的網絡選項卡,看看是什麼響應代碼和文本? –

回答

6

我要去把我的意見爲答案FO rm,它不是你的問題的解決方案,但它是一個很好的方法來解決jQuery Ajax的各種返回問題。

當您在請求特定數據類型(在這種情況下爲dataType: 'json')時,您正在請求特定類型的數據。如果沒有返回該特定的數據類型,它將傳遞給錯誤函數。

如果您的錯誤消息未提供可解釋您的問題的信息,請嘗試請求更友好的數據類型。這樣你就可以看到你的請求實際返回了什麼。如果它的數據不是你請求的數據類型,那麼這是你的問題,你可以從那裏解決。

數據類型如htmltext將非常開放,爲您提供從請求的網址返回的確切數據,您可以從那裏解決您的問題。

希望它有一點幫助。

+0

它實際上解決了我的問題!感謝那! – caiocpricci2

+0

很高興幫助:) – Kodemon

1

jqxhr - XrayWrapper
textStatus - 表示的的Https響應狀態的文本表示(例如成功,錯誤。)
errorThrown - XMLHttpRequest的

jqxhr.status - 給HTTP響應代碼如200,404, 500等..

使用此代碼段打印所有關鍵的JSON對象

var output = ''; 
for (property in object) { 
    output += property + ': ' + object[property]+'; '; 
} 
console.log(output);