select2删除了使用ajax时的默认选项

select2 removes default options when using ajax

本文关键字:默认 选项 ajax 删除 select2      更新时间:2023-09-26

我正试图在select2中设置预定义的选择选项使用ajax但是,当我使用ajax并单击select2时,它会删除我以前在那里的html选项,你知道我如何才能保持这些选项的原样,直到我键入一些未发布的字符才删除它们吗?

我相信这还不清楚,所以我篡改了这两个案例,这样你就会更好地理解

HTML

<select id="e1" style="width:300px">
        <option value="AL">Alabama</option>
        <option value="Am">Amalapuram</option>
        <option value="An">Anakapalli</option>
        <option value="Ak">Akkayapalem</option>
        <option value="WY">Wyoming</option>
    </select>

<select id="e2" style="width:300px">
        <option value="AL">Alabama</option>
        <option value="Am">Amalapuram</option>
        <option value="An">Anakapalli</option>
        <option value="Ak">Akkayapalem</option>
        <option value="WY">Wyoming</option>
    </select>

js

$("#e1").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, page) {
      // parse the results into the format expected by Select2.
      // since we are using custom formatting functions we do not need to
      // alter the remote JSON data
      return {
        results: data.items
      };
    },
    cache: true
  }});
$("#e2").select2();

select2 ajax和none-ajax

的fiddle示例

在处理用户发送的搜索查询的服务器端脚本中,返回前5个元素,即使查询为空,也应显示为默认值。

 $query=$_REQUEST['q'];
 if (!empty($query)) {
     //populate the results if the user is typed something in
 } else {
   $results=array();
   $results[0]['text']=Alabama;
   $results[0]['id']="idofalabama";
   // and so on, for the number of results you want to display when the user didn't input anything in the search box
 }
 return json_encode($results);