Выберите 2 необязательных предварительно выбранных тега и без обработки результатов

РЕДАКТИРОВАТЬ: я нашел временный обходной путь для обработки без результата. Вы можете вернуть тэг «ничего не найдено» с идентификатором 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);

Очевидно, это возвращает выбор, разрушающий весь мой код.
Может ли кто-нибудь объяснить, как я могу использовать необязательный предварительный выбор и как мне следует обрабатывать сообщение «возврат не найден»?

1

Решение

Удалите условие else и попробуйте этот код в своем java-скрипте,

if(typeof(preSelectedTags)=='undefined') {
$('.candidateTags').select2('data',null);
}
0

Другие решения

Я понял это мой собственный вопрос (ы).

Первая часть (о 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);
0

По вопросам рекламы [email protected]