РЕДАКТИРОВАТЬ: я нашел временный обходной путь для обработки без результата. Вы можете вернуть тэг «ничего не найдено» с идентификатором 0. Он по-прежнему можно выбрать, но вы можете пропустить его при вставке тегов в базу данных следующим образом:
if($tagId != 0){
// tag is not the no result tag, so continue
}
Это временное решение, и другой вопрос остается в силе.
РЕДАКТИРОВАТЬ 2: Нет ответа на вопрос обработки результатов. В моем коде произошла ошибка, из-за которой preSelectedTags превратился в ошибку PHP. К сожалению.
Я искал два дня, и я не могу найти ответ (ы).
я использую выбор2 добавить тег-функциональность. Он хорошо отображается и работает, когда есть установленные теги. Тем не менее, все это ломается, когда нет заранее выбранных тегов. Вот как выглядит мой select2:
$('.candidateTags').select2({
//omitted for brevity
}).select2('data',preSelectedTags);
preSelectedTags — это переменная, содержащая массивы в кодировке json из PHP. Это прекрасно работает, когда на самом деле добавляются теги, но когда не удается найти что-либо для предварительного выбора, происходит сбой.
Кроме того, я не могу понять, что должен возвращать вызов ajax, если результаты не найдены. Вот что он возвращает, если результатов нет:
else {
$results[] = array('id'=> "-1", 'text' => 'Er zijn geen resultaten gevonden');
}
echo json_encode($results);
Очевидно, это возвращает выбор, разрушающий весь мой код.
Может ли кто-нибудь объяснить, как я могу использовать необязательный предварительный выбор и как мне следует обрабатывать сообщение «возврат не найден»?
Удалите условие else и попробуйте этот код в своем java-скрипте,
if(typeof(preSelectedTags)=='undefined') {
$('.candidateTags').select2('data',null);
}
Я понял это мой собственный вопрос (ы).
Первая часть (о preSelectedTags, выдающих ошибку и ломающих мой элемент select2):
Я использовал это для создания массива тегов:
var preSelectedTags = [<?php
foreach($preSelectedTags as $tag) {
echo($tag . ',');
}
?>];
Это работает, однако, когда $ preSelectedTags пусто, тогда PHP превратит переменную preSelectedTags в ошибку. Чтобы решить эту проблему, добавьте оператор if:
if(!empty($preSelectedTags)){
//code
}
Теперь вторая часть (о выбираемой опции «ничего не найдено»):
Есть два способа решить это, по-видимому:
Первый — добавить «disabled: true» в строку json, чтобы она выглядела следующим образом:
else {
$results[] = array('id'=> "-1", 'text' => 'no results found', 'disabled' => 'true');
}
echo json_encode($results);
Тем не менее, это сделал не работать на меня. Другой способ решить эту проблему — пропустить идентификатор в массиве $ results:
else {
$results[] = array('text' => 'Er zijn geen resultaten gevonden');
}
echo json_encode($results);