2016-04-06 4 views
0

На мой взгляд, мне нужно восстановить пользователей после их состояния. (это представление twig, я работаю над проектом symfony, но здесь уже построен фоновый процесс)пустой предыдущий контент div, чтобы заменить его другим, используя ajax

Вид содержит 3 кнопки (теги точно) и таблицу. Фактически, это похоже на создание фильтра для отображения пользователей в таблице, следующих за их состоянием.

3 состояния:

  • ждет проверки =>pending_validation
  • включен
  • отключил

Это мой код на мой взгляд HTML:

{# the div containing the menu #} 
<div> 
    <ul class="nav navbar-nav navbar-right nav nav-pills link-right"> 
    <li class="active getState" id="enabled"> 
     <a href="#enabled"> 
     <b>User enabled</b> 
     </a> 
    </li> 
    <li class="getState" id="disabled"> 
     <a href="#disabled"> 
     <b>User disabled</b> 
     </a> 
    </li> 
    <li class="getState" id="pending_validation"> 
     <a href="#pending_validation"> 
     <b>User attempting validation</b> 
     </a> 
    </li> 
    </ul> 
</div> 

{# the div containing the table of user #} 
<div id="userInfo"> 
    {% if (users|length == 0) %} 
    <p> <i>No users are availabled for the choosen statement you click on !</i></p> 
    {% else %} 
    <table class="table table-condensed"> 
    <thead> 
     <tr> 
     <th> 
      USERS 
     </th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
     <td> 
      <div> 
      <table class="table table-striped"> 
       <tbody> 
       {% for user in users %} 
       <tr> 
        <td> 
        <b>{{ user.id }}</b> 
        </td> 
        <td> 
        <b>{{ user.username }}</b> 
        </td> 
        <td> 
        <b>{{ user.email }}</b> 
        </td> 
        <td> 
        {{ user.created_at|date}} 
        </td> 
        <td> 
        </td> 
        <td> 
        <a href="{{path('edit', { 'slug': user.slug })}}"> 
         <button> 
         EDIT 
         </button> 
        </a> 
        </td> 
       </tr> 
       {% endfor %} 
       </tbody> 
      </table> 
      </div> 
     </td> 
     </tr> 
    </tbody> 
    </table> 
</div> 

, как вы можете понять, когда администратор нажимает кнопку, я должен отобразить таблицу правильных пользователей с правильным состоянием в Javascript, используя jQuery.

Я написал этот код в JavaScript с помощью JQuery:

<script type="text/javascript" charset="utf-8" defer> 
    $('.getState').bind('click', function(){ 
    var userInfoDiv = $('#userInfo'); 
    $('.active').removeClass("active"); 
    $(this).addClass("active"); 
    $.ajax({ 
     type: "GET", 
     cache: false, 
     url: "{{ path('index_user_admin') }}", 
     data: { 
      state: $(this).attr("id") 
     }, 
     success: function(html){ 
      userInfoDiv.html(''); 
      var newuserInfoDiv = $(html).find('#userInfo'); 
      userInfoDiv.replaceWith(newuserInfoDiv); 
      userInfoDiv = newuserInfoDiv; 
     } 
    }); 
    }); 
</script> 

Как вы можете понять, параметр URL моего AJAX запроса является url: "{{ path('index_user_admin') }}" и Retuns всего вида HTML, содержащего меню DIV и таблицу.

Запрос ajax хорошо работает, я восстанавливаю информацию о моих пользователях. За исключением одной вещи, и я действительно не знаю, как исправить это поведение.

Как только я нажал на кнопку, она загружает и отображает мои пользовательские данные, но она добавляет ее и не восстанавливает фактическое, что я хочу заменить новыми, которые я вызываю при нажатии.

Что я хотел бы сделать здесь, это заменить фактический контент новым контентом, который я вызываю, когда я нажал на кнопку. На данный момент мои предыдущие данные должны быть удалены для замены новой информацией о пользователях, это не так, на самом деле данные не удаляются, а новые данные добавляются к предыдущим.

ответ

0

Я нашел решение, похоже, что я совершил ошибку новобранец в моем айхаксе.

Фактически, вместо этого userInfoDiv.replaceWith(newuserInfoDiv); в моем запросе ajax, я заменяю это userInfoDiv.append(newuserInfoDiv); и все работает хорошо.

Смежные вопросы