在Ajax数据中将函数用作第二个参数

时间:2019-06-28 08:59:54

标签: jquery ajax jquery-select2

我正在尝试呼叫有权在该特定类别中撰写新闻的用户的名称,并且我正在使用select2插件,因为可能有多个作者在处理同一新闻。因此,当我选择一个类别时,select2的选项字段必须显示用户的名称。

到目前为止,我已经执行了以下操作:

$("#news_category").change(function() {
  var CatId = $("#news_category option:selected").attr('value');

  $("#multipleSelect").select2({
    ajax: {
      url: "/process/categoryUsers.php",
      type: "post",
      dataType: 'json',
      delay: 250,
      data: {
        id: CatId
      }, function(params) {
        return {
          searchTerm: params.text
        };
      }
      },
      processResults: function(response) {
        console.log(response)
        return {
          results: response
        };
      },
      cache: true
    }
  });

在日志中,我看到了我希望看到的数据,但select2插件中没有该数据。我感觉自己在data: ....中做错了事,我正在使用CatId来获取用户列表,我将id作为第一个参数传递,并将第二个函数传递给了当我提供用户列表的函数单击以搜索select2插件

我希望获得控制台中相同用户的列表。

注意::我正在获取Unicode字符中的数据

更新:#news_category是另一个未使用select2插件的选择字段,因此,在发生更改事件时,我正在获取已分配给CatId的所选选项中的类别ID,以获取用户。假设我在变量CatId中得到1,我将该CatId作为参数传递给获取允许在类别ID 1中编写新闻的用户。就像我说的那样,我只是想显示在控制台日志中得到的期望值他们在下拉列表中。

1 个答案:

答案 0 :(得分:0)

就像我在评论中说的那样,我觉得您在data中做错了什么。为了使控制器从函数中返回,我会这样做。

function Getparam (params) {
    return {
      searchTerm: params.text 
    };

}

然后在数据中执行:

`data: {id: CatId, param: Getparam(params)}`

这会传递id和json中的任何参数

编辑:您似乎只是想返回下拉菜单的文本?

您可以执行此操作,而不使用任何参数:

var ddtext = $("#news_category option:selected").text();

然后在data中拥有data: {id: CatId, text: ddtext}

编辑2: 要设置另一个下拉菜单的值,可以使用下面的标记。

        //Create a markup for a select
        var markup = "<option Value='0'>Select option</option>";

        //Populate the markup
        for (var i = 0; i < result.length; i++) {
            markup += "<option Value=" + result[i].Value + ">" + result[i].Text + "</option>";
        }

        //Populate dropdown with value
        $("#//DROPDOWNLIST ID").html(markup).show();

注意:这是html标记。这个字元位于ajax呼叫的success或您的情况processResults中,并将使用processResults响应中传回的数据填充下拉列表