0

我正在用 php 生成一个 json 文件并将其存储在我的服务器上。这是导出json的代码

/**
 * FUNCTIONS TO EXPORT AS JSON
 */
public function expose() {
    return array(
             'guid' => $this->guid,
               'title' => $this->title,
               'folder' => $this->folder,
               'owner' => $this->owner,
                 #'pictures' => json_encode(array_values($this->pictures), JSON_FORCE_OBJECT),
                 'excude' => $this->excude,
                 'added' => $this->added,
                 'lastViewed' => $this->lastViewed,
        );
    #return get_object_vars($this);
}

public function toJSON(){
    return json_encode($this->expose(), JSON_FORCE_OBJECT);
}

该文件的内容是这样的:

{"guid":"","title":"Sample Gallery","folder":"sampleGallery","owner":"","excude":true," added":"","lastViewed":" "}

然后在我的 html 文件中,我尝试使用 jquery 加载它,但我无法将对象获取到控制台

$.getJSON('/files/galleries/index/sampleGallery.gallery', function(data) {
    console.log(data); // works!
var jsonObj = jQuery.parseJSON(data); 
for (key in jsonObj) {
    console.log(key+':'+JSON.stringify(jsonObj[key]));
}
});

请注意,json 的加载工作正常!

有人可以告诉我我做错了什么吗?提前致谢!

4

7 回答 7

1

您不需要调用 parseJSON(),因为数据已经是一个对象。

于 2013-01-30T15:18:12.130 回答
0

我认为您的数据已经被解析,因为您调用了 getJSON,您应该直接访问该data对象并避免jQuery.parseJSON(data);调用。

于 2013-01-30T15:17:02.393 回答
0

你不必这样做var jsonObj = jQuery.parseJSON(data);jQuery.getJson在调用成功回调之前将返回的值解析为 json 对象。

你的代码应该是

$.getJSON('/files/galleries/index/sampleGallery.gallery', function(data) {
    console.log(data); // works!
    for (key in data) {
        console.log(key+':'+JSON.stringify(data[key]));
    }
});
于 2013-01-30T15:17:05.730 回答
0

如果您将数据作为 JSON 返回,则无需再次解析。JQuery 已经为您做到了。

$.getJSON('/files/galleries/index/sampleGallery.gallery', function(data) {
    console.log(data); // works!
    for (key in data) {
        console.log(key+':'+JSON.stringify(data[key]));
    }
});
于 2013-01-30T15:17:41.483 回答
0

大概data包含解析的 JSON(即一个 JavaScript 对象)。

试图解析一个 JavaScript 对象,就好像它是一个包含 JSON 的字符串一样是行不通的。

摆脱var jsonObj = jQuery.parseJSON(data);然后for (var key in data) {

于 2013-01-30T15:18:43.027 回答
0

data 已经是一个对象,不需要解析它。

只需阅读手册:http ://api.jquery.com/jQuery.getJSON/

于 2013-01-30T15:19:45.563 回答
0

您无需再做jQuery.parseJSON(data)任何事情,因为您正在使用getJSON.

在此处查看文档:http: //api.jquery.com/jQuery.getJSON/

我认为你的代码应该是:

$.getJSON('/files/galleries/index/sampleGallery.gallery', function(data) {
    console.log(data); // works!
// jsonObj removed, just use data since data is in JSON already
for (key in data) {
    console.log(key+':'+JSON.stringify(jsonObj[key]));
}
});
于 2013-01-30T15:19:51.150 回答