我正在使用jquery.webspirited.coms tagit jquery,它在创建标签时正常工作,在前端分离,但是当我发布数据时,它只将最后一个标签作为值发布到数据库..
我找不到任何关于如何正确安装插件的文档,除了要放在标题中的代码等,这里是标题代码。
<script type="text/javascript">
$(function () {
$('#topic').tagit();
$('#topicGetTags').click(function () {
showTags($('#topic').tagit('tags'))
});
$('input[type=submit]').click(function(){
tag = $('#topic').tagit('tags');
console.log(tag);
for (var i in tag)
$('form').append("<input type='hidden' name='tags[]' value='"+tag[i].value+"' >");
});
function showTags(tags) {
console.log(tags);
var string = "Tags (label : value)\r\n";
string += "--------\r\n";
for (var i in tags)
string += tags[i].label + " : " + tags[i].value + "\r\n";
alert(string);
}
});
</script>
输入
<ul id="topic" name="tags[]"></ul>
tagit.js文件本身有近500行,所以不是在这里复制/粘贴,而是链接到它。
http://webspirited.com/tagit/js/tagit.js
此处还有INSERTION代码,这是我需要查看的内容
$tags = isset($_POST['tags']) ? $_POST['tags'] : null;
if (is_array($tags)) {
foreach ($tags as $t) {
// escape the $t before inserting in DB
$sql = "INSERT INTO tags (tags) VALUES('$t')";
}
感谢您提供任何提示
答案 0 :(得分:0)
将隐藏的输入名称更改为name="tag[]"
,您将在PHP脚本中的$_POST['tag']
中收到一个数组 - 目前您正在覆盖之前的输入,这就是为什么您只接收一个项目
然后,您可以循环遍历数组并根据需要在数据库中插入它们。
答案 1 :(得分:0)
试试这个:
$tag = isset($_POST['tag']) ? $_POST['tag'] : null;
if (is_array($tag)) {
foreach ($tag as $t) {
// escape the $t before inserting in DB
$sql = "INSERT INTO tags (tag) VALUES('$t')";
}
} else {
echo 'Invalid tag';
}
*已更新:更改以下代码(使用tage[]
作为名称并在{}
中换行追加代码。可能您在for
和append
以及append
之间有某些内容1}}代码在for
循环结束后执行)
for (var i in tag)
$('form').append("<input type='hidden' name='tag' value='"+tag[i].value+"' >");
如下:
for (var i in tag) {
$('form').append("<input type='hidden' name='tag[]' value='"+tag[i].value+"' >");
}