使用 AJAX 进行更改后无法启动 select2 类

Can't initiate select2 class after onchange with AJAX

提问人:M Nabil Akbar 提问时间:7/18/2023 更新时间:7/18/2023 访问量:18

问:

使用 AJAX 进行更改后无法启动 select2 类 这是主页,选择任何选项后我无法调用select2类,我什至不知道这叫AJAX是什么,或者只是纯javascript的常规POST

<select name="TDP_Code" class="form-control select2" id="TDP_Code" onchange="cek_TDP();">
   <option value="select" selected>(Select TDP Grp No)</option>
   <option value="1">Content 1</option>
   <option value="2">Content 2</option>
</select>

<div id="result-tdp">
    <div class="row mb-3 ml-4">
         <div class="col-md-2">
             <span>Talent</span>
          </div>
             <span>:</span>
       <div class="col-md-9 ml-5">
         <select class="form-control select3" style="width: 100%;" id="talent">
             <option value="0">(Select Talent)</option>
         </select>
        </div>
    </div>
</div>

<script>
$('.select2').select2({
    theme: 'bootstrap4'
});
function postRequestTDP(strURL) {
      var xmlHttp;
      if (window.XMLHttpRequest) {
        var xmlHttp = new XMLHttpRequest();
      } else if (window.ActiveXObject) {
        var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
      }
      xmlHttp.open("POST", strURL, true);
      xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
      xmlHttp.onreadystatechange = function () {
        if (xmlHttp.readyState == 4) {
          updatePageTDP(xmlHttp.responseText);
        }
      };
      xmlHttp.send(strURL);
    }

    function updatePageTDP(str) {
      document.getElementById("result-tdp").innerHTML = str;
    }

    function cek_TDP() {
      id = document.getElementById("TDP_Code");
      var url = "result-select-tdp.php?id=" + id;
      postRequestTDP(url);
      // alert(url);
    }
</script>

结果选择-tdp.php 页面,无法在此处调用类 select2

<select name="result_select" class="form-control select2" id="TDP_Code" onchange="cek_TDP();">
   <option value="select" selected>(Select TDP Grp No)</option>
   <option value="result-1">Result 1</option>
   <option value="result-2">Result 2</option>
</select>

使用AJAX发布后如何在不同的页面中调用这两个类

javascript html jquery css, ajax

评论

0赞 CodeThing 7/18/2023
你叫一个班级是什么意思?
0赞 M Nabil Akbar 7/18/2023
@CodeThing在不同的页面中启动一个类我的意思是

答:

0赞 Gökhan Baştürk 7/18/2023 #1

在将新 HTML 添加到 DOM 后,您可以尝试在 updatePageTDP() 函数中重新初始化 Select2:

>  function updatePageTDP(str) {  
> document.getElementById("result-tdp").innerHTML = str;   //
> re-initialize Select2   $('.select2').select2({
>     theme: 'bootstrap4'   }); }

最好使用 ajax complete 事件来初始化 select2:

function postRequestTDP(strURL) {
  var xmlHttp;
  if (window.XMLHttpRequest) {
    var xmlHttp = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlHttp.open("POST", strURL, true);
  xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  xmlHttp.onreadystatechange = function () {
    if (xmlHttp.readyState == 4) {
      updatePageTDP(xmlHttp.responseText);
      // re-initialize Select2
      $('.select2').select2({
        theme: 'bootstrap4'
      });
    }
  };
  xmlHttp.send(strURL);
}