【问题标题】:returning json from the lastfm api从 lastfm api 返回 json
【发布时间】:2014-06-29 17:57:58
【问题描述】:

所以我正在尝试创建一个 jquery/ajax 自动完成表单,它使用 last.fm api 将歌曲的标题自动完成到用户输入的任何内容,我遇到的问题是我似乎无法获得最后一个fm 数据以正确的 json 格式返回。这是我的 jquery 插件 (link to autocomplete) 希望返回的格式:

{
    "suggestions": [
        { "value": "United Arab Emirates", "data": "AE" },
        { "value": "United Kingdom",       "data": "UK" },
        { "value": "United States",        "data": "US" }
    ]
}

这基本上就是我在我的 php 脚本中所做的,将 json 返回到自动完成插件:

                $titleName = "what's my age";
                $limit = 1;
                $results = Track::search($titleName, $limit);
                print_array($results);
                echo "<ul>";
                while ($title = $results->current()) {
                    echo $limit;
                    echo "<li><div>";
                    echo "Artist: " . $title->getArtist() . "<br>";
                    echo "Album: " . $title->getAlbum() . "<br>";
                    echo "Duration: " . $title->getDuration() . "<br>";
                    echo "getWiki: " . $title->getWiki() . "<br>";
                    echo "name: " . $title->getName() . "<br>";
                    echo "</div></li>";
                    $jsonArray['suggestions'] = array('Name'.$limit => $title->getName(), 'Artist'.$limit => $title->getArtist());
                    $limit++;
                    $title = $results->next();
                }
                echo "</ul>";
                print_array($jsonArray);
                echo json_encode($jsonArray);

echo 和 print 语句仅用于测试,但这是 json_encode 返回的内容:

{"suggestions":{"Name2":"Blink vs. Jay-Z - what's my age again","Artist2":"Dj Tech1"}}

这就是返回的内容(通过回声测试):

1
Artist: Blink 1-82
Album: 
Duration: 0
getWiki: 
name: What's My Age Again?
2
Artist: Dj Tech1
Album: 
Duration: 0
getWiki: 
name: Blink vs. Jay-Z - what's my age again

所以我知道代码工作正常,sdk 自动完成等也是如此。我也明白每次循环时都会删除 while 循环中的数组,我还没有解决这个问题,但是那个问题除此之外,json 没有以请求的格式返回,我似乎找不到正确的方法来构造数组以便以正确的格式获取它,有什么想法吗?

【问题讨论】:

    标签: php json last.fm


    【解决方案1】:
    $suggestionsArr['suggestions'] = [];
    
    foreach (range(1,3) as $key => $value) {
        array_push($suggestionsArr['suggestions'], ['name' => 'Song1', 'artist' => 'Artist1']);
    }
    
    echo json_encode($suggestionsArr);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-26
      • 2014-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多