2013-06-24 67 views
0

我使用jQuery函數$ .getJson。它正在發送我想要的數據,生成JSON的PHP腳本正常工作。但是,我遇到的問題出現在這裏。什麼是錯我的JSON

在我的$ .getJSON代碼,我想,如果成功的話簡單地記錄結果並記錄爲一個錯誤,如果錯誤......你猜對了......我得到一個錯誤......

這裏是我的JSON代碼被傳遞給它正在產生錯誤,但我看不出有什麼不對的地方....

{ 
"results":{ 
"city":[ 
    "metric":"visits", 
    "dimension":"city", 
    "data":[["London","5"],["Glasgow","3"],["(not set)","1"],["Aberdeen","1"],["Antalya","1"]] 
    ], 

"browser":[ 
    "metric":"visits", 
    "dimension":"browser", 
    "data":[["Internet Explorer","11"],["Chrome","9"],["Firefox","3"],["Safari","3"],["Android Browser","2"]] 
    ], 

"screenResolution":[ 
    "metric":"visits", 
    "dimension":"screenResolution", 
    "data":[["1280x800","5"],["1680x1050","4"],["1024x768","3"],["1366x768","3"],["1280x1024","2"]] 
    ] 
    } 
    } 

更新,以顯示CODE

這是用於我的代碼得到結果

$.ajax({ 

//DEFINE URL being called by Ajax 
url:'./getAnalytics.php', 
dataType: "json", 
data:{dateToSearch:dateToSearch}, 
success:function(resultsToView){ 

console.log(resultsToView); 


},error:function(resultsToView){ 
console.log("Error: " + resultsToView); 
} 
}); 

和控制檯顯示: Result of resultsToView

當我得到這個回來,誤差函數被調用,而不是成功。 請幫忙。

+0

的狀態代碼返回了什麼? –

+2

什麼是JSONam? –

+1

在張貼之前將它甩掉 - http://jsonlint.com/ –

回答

3

您的JSON無效。方括號表示陣列(列表),其中項目沒有密鑰。更改

[ 
    "metric":"visits", 
    "dimension":"…", 
    … 
] 

對象(圖)語法用花括號:

{ 
    "metric":"visits", 
    "dimension":"…", 
    … 
} 

而且,錯誤回調有簽名Function(jqXHR xhr, String textStatus, String errorThrown)。您正在記錄xhr對象的字符串,這沒有幫助。更好地使用

…, 
error: function(xhr, status, error) { 
    console.log("Error: "+error+" ("+status+")", xhr); 
} 
+0

對於瀏覽器,他還有兩次:「metric」:「visited」和「screenResolution」:「metric」[ 「metric」 :「訪問」,' –

+0

@ᾠῗᵲᄐᶌ:當然,但我不會寫出來的全JSON :-) – Bergi

+0

:P是會解決所有這些雖然+1 –

2

您的JSON無效。例如。

"city":[ 

應該是:

"city":{ 

[爲陣列。

您可以使用JSON驗證器來檢查您的JSON是好是如JSONLint

+0

不錯,你還包括一個驗證器鏈接 – neelsg