使用AJAX数据源时,我可以在Select2中设置查询字符串参数吗?

时间:2017-08-06 23:22:28

标签: javascript jquery ajax jquery-select2 jquery-select2-4

我遇到了一个奇怪的" (可能不是)我需要通过URL传递参数而不是将它们作为q发送的情况。请查看docs中的以下示例:

$(".js-data-example-ajax").select2({
  ajax: {
    url: "https://api.github.com/search/repositories",
    dataType: 'json',
    delay: 250,
    data: function (params) {
      return {
        q: params.term, // search term
        page: params.page
      };
    },
    processResults: function (data, params) {
      params.page = params.page || 1;

      return {
        results: data.items,
        pagination: {
          more: (params.page * 30) < data.total_count
        }
      };
    },
    cache: true
  },
  ...
});

在上面的示例中,params.term被发送到服务器,您可以使用任何机制来获取它并执行您想要执行的操作。

在我的情况下,我将搜索词发送到API端点。 API期望类似以下示例:

http://someurl?slug=56&title=56&description=56&content=56

换句话说:

'http://someurl?slug='+params.term+'&title='+params.term+'&description='+params.term+'&content='+params.term

正如您所知,params.term成为要在API的网址上发送的值。

但我不知道如何用Select2实现这一目标。我一直在寻找一些信息,但没有成功,这就是我到目前为止所看到的:

但没有人说我需要什么。有没有想过如何实现这个目标?

1 个答案:

答案 0 :(得分:4)

更改数据对象以反映您希望在查询字符串中包含的属性:

data: function (params) {
  return {
    slug: params.term, 
    description: params.term,
    content: params.term
  };
},

仔细检查开发工具网络,这确实是作为GET完成的,否则尝试将type:'GET'添加到a​​jax选项