什么是我的JSON错了

时间:2013-06-24 13:23:31

标签: php javascript jquery json

我正在使用jquery函数$ .getJson。它正在发送我想要的数据,生成JSON的PHP脚本正常运行。但是,我遇到的问题是从这里发生的。

在我的$ .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"]]
    ]
    }
    }

更新显示代码

这是我用于获取结果的代码

$.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

当我得到这个时,调用错误函数而不是成功。 请帮忙。

2 个答案:

答案 0 :(得分:3)

您的JSON 无效。方括号表示数组(列表),其中项目没有键。变化

[
  "metric":"visits",
  "dimension":"…",
  …
]
使用花括号

对象(map)语法:

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

此外,错误回调具有签名Function(jqXHR xhr, String textStatus, String errorThrown)。您正在记录xhr对象的字符串化,这没有用。更好地使用

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

答案 1 :(得分:2)

您的JSON无效。 E.g。

"city":[

应该是:

"city":{

[适用于数组。

您可以使用JSON验证程序检查您的JSON是否良好,例如JSONLint