Это касается назначения нескольких пользователей с использованием плагина Select2
, Ajax и API. Ситуация, у меня есть функция, которая содержит 2 Ajax с разными указанными URL. В настоящее время я предварительно выбрал пользователя, который хранится в БД. Выбор использует Select2
в модальном. Итак, что происходит сейчас, когда открыт модал, 1-й Ajax загрузит URL /all_user
, чтобы отобразить всех пользователей в БД. После этого 2nd Ajax загрузит URL /activity
, чтобы получить и загрузить информацию для других полей в том же Модальном. Оба URL работают параллельно.
URL /all_user
успешно, чтобы отобразить всех пользователей. URL /activity
также успешно отображает предварительно выбранного пользователя. Тем не менее, когда я закрываю модальный и снова открываю тот же модальный без refre sh страницы, он определенно загрузит ту же функцию, которая содержит 2 Ajax, как упомянуто выше.
FYI, в /activity
У меня есть функция для преобразования из String в Array, так как я получил в String из БД, поэтому необходимо преобразовать перед отображением в Select
.
Таким образом, проблема в том, что данные будут дублироваться 2x, когда я закрою и снова открою, он будет дублироваться 3 раза. Как предотвратить дублирование?
Ниже предварительно выбраны Select2
in /activity
.
Ниже /all_user
, которые успешно отображаются все пользователи
Поэтому, когда Модал закрывается и открывается снова, происходит дублирование.
HTML
<select type="text" class="form-control mySelect" id="editOwner" name="editOwner" multiple="multiple"></select>
SELECT2 INIT
var mySelect = $('.mySelect').select2({
allowClear: true,
placeholder: "Search Owner...",
minimumResultsForSearch: -1,
width: 600,
});
JS
<span onclick='editOwner(""+value3.l3_id+"")'></span>
function editOwner(id){
activity_id = id;
$.ajax ({
url: '/all_user',
crossDomain: true,
type: "POST",
dataType : 'json',
cache: false,
processData: true,
data: 'data',
success: function(response){
for (var i = 0; i < response.data.length; i++) {
$("#editOwner").append($("<option>", {
response: response.data[i].fullname,
text: response.data[i].fullname
}));
}
}
});
$.ajax({
url : '/activity',
crossDomain: true,
type: "POST",
dataType : 'json',
cache: false,
processData: true,
data: {task_id: activity_id}},
success: function(response){
if (response.status == "Success"){
$("#editOwner").val(response.data[0]["task_owner"]).attr("readonly",false);
$(response.data).each(function(key,value){
var owners = value.task_owner.split(',');
$(owners).each(function(k,v){
$("#editOwner").append($("<option selected>", {
response: v,
text: v
}));
});
$("#editOwner").val(owners).trigger("change");
});
}
else {}
},
error: function(e){}
});
$('#editOwnerModal').modal('show');
}