0

我正在使用 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);
}
});

控制台显示: resultsToView 的结果

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

4

2 回答 2

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);
}
于 2013-06-24T13:27:11.387 回答
2

您的 JSON 无效。例如

"city":[

应该:

"city":{

[ 用于数组。

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

于 2013-06-24T13:28:18.533 回答