使用ajax刷新div

时间:2016-02-05 15:27:58

标签: php jquery ajax

当ajax调用成功时,我需要刷新一个select(通过id)。 但我不知道如何处理

ajax功能:

$('#insertForm').on('click', function(){
  var form_intitule = $('input[name=form_intitule]').val();
  $.ajax({
    type: "GET",
    url: "lib/function.php?insertForm="+insertForm+"&form_intitule="+form_intitule,
    dataType : "html",
    error: function(XMLHttpRequest, textStatus, errorThrown) {
      alert(XMLHttpRequest + '--' + textStatus + '--' + errorThrown);
    },
    success:function(data){
      /*here i need to reload #listeFormation*/      }
  });
});

html.php

<div class="form-group">
  <label for="nomSalarie" class="col-sm-1 control-label" id="nameSelect">Formations</label>
  <div class="col-sm-11">
    <select name="listeFormation[]" id="listeFormation" class="form-control" multiple>';
      while($ligne = $displayFormation->fetch()){
        $data['formation'] .='<option value="'. $ligne['form_id'].'">'.$ligne['form_intitule']. " [" . $ligne['form_organisme'] . "]".'</option>';
      }
    </select>
  </div>
</div>

1 个答案:

答案 0 :(得分:0)

我的想法有两种方式:

  1. 使用jQuery中的$ .load():(它是一个将响应注入您选择的节点的GET)
  2. &#13;
    &#13;
    function debounce(inner, ms = 0) {
      let timer = null;
      let resolves = [];
    
      return function (...args) {    
        // Run the function after a certain amount of time
        clearTimeout(timer);
        timer = setTimeout(() => {
          // Get the result of the inner function, then apply it to the resolve function of
          // each promise that has been created since the last time the inner function was run
          let result = inner(...args);
          resolves.forEach(r => r(result));
          resolves = [];
        }, ms);
    
        return new Promise(r => resolves.push(r));
      };
    }
    
    &#13;
    &#13;
    &#13;

    1. 使用您的代码,您可以简单地使用:
    2. &#13;
      &#13;
      $('#insertForm').on('click', function(){
        var form_intitule = $('input[name=form_intitule]').val();
        
        $("#listeFormation").load( 
          "lib/function.php", 
          { 
            insertForm: insertForm,
            form_intitule: form_intitule
          },
          function(response, status, xhr){
            if(status == "error"){
              alert(xhr + '--' + xhr.status + " " + xhr.statusText);
            }else{
              // Process the HTML you want here.. lets call: 'html_you_want_to_inject'
              
              $('#listeFormation').html(html_you_want_to_inject);  
            }
          }
        });
      });
      &#13;
      &#13;
      &#13;

      我想有一点要考虑是从div中移除PHP并将页面加载与你的Javascript一起转换为div dinamic。每次运行AJAX时都会杀死PHP,在运行时重写内容。