2015-05-15 2 views
-1

У меня вопрос, поэтому я создаю систему, которая обновляет в базе данных строку, когда onChange выбирает поле. Все идет хорошо, но я хочу отбросить сообщение succes, если обновление было успешным.Показать сообщение succes от ajax

Мое мнение:

<form action="" id="updateStatus" method="post"> 
    <select id="statusSelect" 
      name="{{ gift.id_instant_gagnant }}" 
      class="form-control" 
      onChange="updateCadeauStatus({{ gift.id_instant_gagnant }})"> 
      {% for key,statut in form_logistique.statut.choices %} 
       <option value="{{ key }}" 
        {% if gift.etat == key %}selected="selected"{% endif %}> 
        {{ statut }} 
       </option> 
      {% endfor %} 
    </select> 
</form> 
<script> 
    function updateCadeauStatus(id) { 
     var id = id; 
     var selectedName = $("#statusSelect option:selected").val(); 
     var url_deploy = 'http:localhost/updateStatus' 
     console.log(id); 
     console.log(selectedName); 
     $.ajax({ 
      url: url_deploy, 
      type: "POST", 
      async: true, 
      data: { id_cadeau:id, id_status:selectedName} 
     }); 
    } 
</script> 

Контроллер:

public function updateStatus(){ 
    $iGiftId = $_POST['id_cadeau']; 
    $iNewStatus = $_POST['id_status']; 
    $bUpdate = $this->updateStatusByGiftId($iGiftId, $iNewStatus); 
    return $this->render('logistique.twig'); 

} 

Модель:

public static function updateStatusByGiftId($iGiftId, $iStatusId){ 
    $request = sprintf(' UPDATE `%s` set etat = %d WHERE id = %d ', $table, $iStatusId, $iGiftId); 

    return Mysqli::query($request, $database); 
} 

Так что все идет хорошо, но я хочу, чтобы сбросить сообщение после каждого обновления, слишком отображаться в представлении. Пожалуйста, помогите мне!!! Thx заранее, извините за мой английский.

+0

возможно дубликат (http://stackoverflow.com/questions/14220321/how-to-return-the -response-from-an-асинхронный вызов) –

ответ

3
$.ajax({ 
      url: url_deploy, 
      type: "POST", 
      async: true, 
      data: { id_cadeau:id, id_status:selectedName}, 
      success : function(data){ 
       console.log('success'); 
      }, 
      error: function(){ 
       console.log('error'); 
      } 
     }); 
+0

Но невозможно показать сообщение g в представлении? – TanGio

+0

@Gigel после эха из данных url_deploy .. вы можете console.log (данные); он будет выводить ваши данные эхом –

+0

Почему это невозможно? –

3

Вы можете отказаться от ответа файла проверки на ajax.

$.ajax({ 
    url: url, 
    type: "POST", 
    ... 
    success: function(response){ 
     window.alert(response); 
    } 
}) 

Чтобы быть более конкретным, если вы хотите дать сообщение, только когда вы успешно изменили строку. Измените файл проверки (URL :) и распечатать messagge только тогда, когда вы имели успех ..

Есть другие способы сделать это ..

Вы можете напечатать «идентификатор сообщения» и получить его с помощью сценария и оставьте сообщение:

$.ajax({ 
    url: url, 
    type: "POST", 
    ... 
    success: function(response){ 
     if(response == '1'){ 
      window.alert('Successfully changed!!'); 
     }else if(response == '0'){ 
      $("#foo").html("Error, not changed :("); 
     }else{ 
      ------ something else ------ 
     } 
    } 
}) 

Надеюсь, что смогу помочь!

3

Я не уверен, если у вас есть ответ в другом файле. Cuz ваш ответ сейчас находится в вар data в строке с кодом:
}).done(function(data){

$.ajax({ 
    url: url_deploy, 
    type: "POST", 
    async: true, 
    data: { id_cadeau:id, id_status:selectedName} 
}).done(function(data){ 
    $("[SuccesDiv]").append("[Succes MSG]"); 
}); 

Текст между [ - ] Мента поставить там свой собственный элемент или данные.

[EDIT]

Я did'nt хорошо выглядеть ...

Вы не смотрите, когда она изменяется.
Чтобы сделать это, сделать это: [? Как вернуть ответ от асинхронного вызова]

$("select").on("change", function(){ 
    $.ajax({ 
    url: url_deploy, 
    type: "POST", 
    async: true, 
    data: { id_cadeau:id, id_status:selectedName} 
    }).done(function(data){ 
    $("[SuccesDiv]").append("[Succes MSG]"); 
    }); 
});