我有一个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"]
所以我的问题有两个部分-
如何更改/设置search_artists.php
的格式以同时包含歌手姓名和歌手Spotify UID?我想我必须返回JSON对象而不是数组?
使用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
}
任何朝着正确方向提出的建议或任何建议都值得赞赏。谢谢!