Php 按功能选择2个标签设置值
我有一个select2,只有在获得许可的情况下,我才需要创建标签。我需要通过用户id检查ajax的权限 现在设置为Php 按功能选择2个标签设置值,php,jquery,ajax,jquery-select2,Php,Jquery,Ajax,Jquery Select2,我有一个select2,只有在获得许可的情况下,我才需要创建标签。我需要通过用户id检查ajax的权限 现在设置为tags:true,我可以随时创建新的标记。(好的) 如果设置标记:false我无法创建新标记。(好的) 我尝试使用标记:function(){return false;}但似乎标记仍然可以创建。(坏) 我的目标是有这样的东西: tags: function() { $.ajax({ type: "POST", async: false, dataType
tags:true
,我可以随时创建新的标记。(好的)
如果设置标记:false
我无法创建新标记。(好的)
我尝试使用标记:function(){return false;}
但似乎标记仍然可以创建。(坏)
我的目标是有这样的东西:
tags: function() {
$.ajax({
type: "POST",
async: false,
dataType:"json",
url: "ajax/check_permissione.php",
data: { 'user-id': 1 },
success: function(data, status) {
if ( data.PermissionOK == 1 ) {
return true;
}
return false;
}
});
}
但我现在不知道标签是否可以接受函数的值
我的剧本:
$("#test").select2({
tags: true, // <- if true create new tags, else only select available
createTag: function (params) {
return {
id: params.term,
text: params.term,
newOption: true
}
},
templateResult: function (data) {
var $result = $("<span></span>");
$result.text(data.text);
if (data.newOption) {
$result.append(" <em>(new option)</em>");
}
return $result;
}
}).on('select2:select', function (e) {
//others operations
});
$(“#测试”)。选择2({
tags:true,//只需将tags:true
更改为tags:permission
,其中permission
包含指示用户id是否具有权限的值。如果通过ajax检查权限,则可以将结果存储到变量中。如图所示
var permission = true;
$.ajax({
type: "POST",
async: false,
dataType:"json",
url: "ajax/check_permissione.php",
data: { 'user-id': 1 },
success: function(data, status) {
if ( data.PermissionOK == 1 ) {
permission = true;
} else {
permission = false;
}
}
});
如果使用ajax,请先执行此代码,然后再使用选择2
作为参考。
如果希望避免使用“async:false”,可以通过这种方式实现。(使用jQuery承诺)
你的ajax工作吗?是的,但我也尝试过简单的标记:function(){return false;}来尝试和不工作function()我认为您必须根据ajax的响应重新初始化select2。除此之外,您还需要删除async:false
。它已被弃用,而且是一种糟糕的做法,对它的支持很快将被删除。
var permission = true;
var result =
$.post({
dataType:"json",
url: "ajax/check_permissione.php",
data: { 'user-id': 1 }
}).done(function(data, status) {
if ( data.PermissionOK == 1 ) {
permission = true;
} else {
permission = false;
}
});
// called when ajax process done.
result.promise().done(function() {
// $("#test").select2({ ~
});