编辑:我找到了无结果处理的临时解决方法。你可以返回一个id为0的no results found标签。它仍然可以选择,但你可以在将标签插入数据库时跳过它,如下所示:
if($tagId != 0){
// tag is not the no result tag, so continue
}
这是一个临时解决方案,另一个问题仍然存在。
编辑2:回答无结果处理问题。我的代码中有一个错误,它将preSelectedTags转换为PHP错误。糟糕。
我一直在寻找两天,我似乎无法找到答案。
我正在使用select2添加标记功能。它显示正常,当有标签设置时它可以工作。但是,当没有预先选择的标签时,整个事情就会中断。这是我的select2的样子:
$('.candidateTags').select2({
//omitted for brevity
}).select2('data',preSelectedTags);
preSelectedTags是一个包含PHP的json编码数组的变量。当实际添加标签时,这样可以正常工作,但是当它没有找到任何要预选的内容时,整个事情就会崩溃。
另外,我似乎无法弄清楚当没有找到结果时ajax调用应该返回什么。如果没有结果,这就是它返回的内容:
else {
$results[] = array('id'=> "-1", 'text' => 'Er zijn geen resultaten gevonden');
}
echo json_encode($results);
显然,这会返回一个可选择的选项,破坏我的整个代码。 有人可以解释我如何使用可选的预选,以及我应该如何处理'no returns found'-message?
答案 0 :(得分:0)
删除您的其他条件并在您的java脚本中尝试此代码,
if(typeof(preSelectedTags)=='undefined') {
$('.candidateTags').select2('data',null);
}
答案 1 :(得分:0)
我想出了我自己的问题。
第一部分(关于preSelectedTags给出错误并打破我的select2元素): 我用它来创建标签数组:
var preSelectedTags = [<?php
foreach($preSelectedTags as $tag) {
echo($tag . ',');
}
?>];
这是有效的,但是当$ preSelectedTags为空时,PHP会将preSelectedTags var变为错误。要解决此问题,请添加if语句:
if(!empty($preSelectedTags)){
//code
}
现在是第二部分(关于'找不到结果'可选项):
There are two ways to solve this, apparently:
第一个是将'disabled:true'添加到json字符串,所以它看起来像这样:
else {
$results[] = array('id'=> "-1", 'text' => 'no results found', 'disabled' => 'true');
}
echo json_encode($results);
然而,这确实不对我有用。解决它的另一种方法是,省略了$ results数组中的id:
else {
$results[] = array('text' => 'Er zijn geen resultaten gevonden');
}
echo json_encode($results);