Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按功能选择2个标签设置值_Php_Jquery_Ajax_Jquery Select2 - Fatal编程技术网

Php 按功能选择2个标签设置值

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

我有一个select2,只有在获得许可的情况下,我才需要创建标签。我需要通过用户id检查ajax的权限

现在设置为
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({ ~
});