试图解析或分配JSON响应:响应被读作[object Object]

时间:2014-04-06 17:06:47

标签: javascript jquery ajax json

使用Flickr API,Javascript / JQuery和AJAX,我有以下代码:

        function getRequest(arguments)
    {
        var requestinfo;
        $.ajax({
            type: 'GET',
            url: flickrurl + '&'+ arguments + '&jsoncallback=jsonCallback',
            async: false,
            jsonpCallback: 'jsonCallback',
            dataType: 'jsonp',
            success: function (json)
            {
                requestinfo = json;
                //Parse attempt requestinfo = $.parseJSON(json);
                //Old method return json;
            }
        });
        return requestinfo;
    }

当收到响应并且我尝试将json(响应)数据分配给变量requestinfo时(或者即使我直接执行'return json'行),我得到一个错误,指示返回值未定义。在使用success函数愚弄时,我注意到由于'json'被读作[object Object]而不是JSON响应,任何解析响应的尝试都会失败。

响应是否已经采用数组格式?如果没有,我怎么能达到这一点呢?

以下是一个示例JSON响应(有多种类型,因为需要不同的请求来接收所有需要的信息(Flickr API):

{
"collections": {
    "collection": [
        {
            "id": "122388635-72157643471284884",
            "title": "Test Gallery 2",
            "description": "Test 2",
            "iconlarge": "/images/collection_default_l.gif",
            "iconsmall": "/images/collection_default_s.gif",
            "set": [
                {
                    "id": "72157643471292484",
                    "title": "Set 1",
                    "description": ""
                }
            ]
        },
        {
            "id": "122388635-72157643469075734",
            "title": "Test Gallery 1",
            "description": "Bing Photos",
            "iconlarge": "http://farm3.staticflickr.com/2888/cols/72157643469075734_b9a37df67c_l.jpg",
            "iconsmall": "http://farm3.staticflickr.com/2888/cols/72157643469075734_b9a37df67c_s.jpg",
            "set": [
                {
                    "id": "72157643469056814",
                    "title": "Test Gallery 1",
                    "description": "Bing Backgrounds"
                }
            ]
        }
    ]
},
"stat": "ok"
}

那么如何在不中断数据的情况下将接收的数据传递给其他功能呢?

2 个答案:

答案 0 :(得分:0)

代码应该如下所示

      success: function (collections)
      {
     $.each(collections,function(index,item){
        var i=0;
        $.each(item.conllection[i],function(index,item){
        alert(item.id);
        i++;
        });
        });

答案 1 :(得分:-1)

感谢穆萨,

  

可能重复How to return the response from an AJAX call? - Musa

问题实际上是给定线程的副本。