如何包含ID以便以与文本字段之一关联的形式提交?

时间:2018-08-09 23:11:53

标签: php html jquery-ui spotify

我有一个PHP网页(new_item.php),其中包含HTML表单以创建一个新的“项目”,在我的情况下是乐队商品。四个输入是艺术家名称,项目类型,项目照片和项目描述。我在一个单独的PHP脚本(search_artists.php)上使用Spotify Web API在Spotify上搜索名称与所提供名称相似的艺术家。

新商品表格:

当我单击自动完成选项之一时,我不仅要使它完成艺术家的名字,而且还希望在表单中的某个位置包含艺术家的Spotify UID ,这样我就可以提交表单时使用该ID。现在,我的search_artists.php仅输出与提供的艺术家名称相似的艺术家名称数组。例如-

如果我访问search_artists.php?name=weez,页面将为我提供以下信息:

["Lil Wayne","Weezer","Lich Weezy","D-weezy","Prince Weez"]

所以我的问题有两个部分-

  1. 如何更改/设置search_artists.php的格式以同时包含歌手姓名和歌手Spotify UID?我想我必须返回JSON对象而不是数组?

  2. 使用jQuery UI自动完成功能,如何选择艺术家姓名和艺术家ID,但如何隐藏艺术家ID并在选择自动完成选项时将Spotify UID插入我的表单中,以便与其余的表格数据?据我所知,我必须在type="hidden"上使用输入标签吗?

来自new_item.php的自动填充代码段

$("input#item_artist").autocomplete({
        source: function(request, response) {
            $.get("search_artists.php", {
                name: encodeURIComponent(request.term)
            }, function(data) {
                console.log("request.term = " + request.term + "\ndata (" + typeof data + ") = " + data);
                response(JSON.parse(data));
            })
        },
        appendTo: "#artist_suggestions"
    });

search_artists.php

include '../resources/includes/init.php'; 

if (isset($_GET["name"])) {
    $name = "*" . urldecode($_GET["name"]) . "*";
    $artists = search_artist($name);
//    output($artists);
    $results = array();
    if (is_array($artists) || is_object($artists)) {
        foreach ($artists as $artist) {
            if (!in_array($artist->name, $results))
                $results[] = $artist->name; // $artist also has an id field
        }
        echo json_encode($results);
    } else {
        echo "[]";
    }
} else {
    ?>
    <form action="search_artists.php" method="get">
        <input type="text" name="name" placeholder="name" />
    </form>
    <?php
}

任何朝着正确方向提出的建议或任何建议都值得赞赏。谢谢!

0 个答案:

没有答案