2015-03-24 19 views
0

У меня есть следующий фрагмент javascript, который передает данные в мою базу данных, а затем возвращает сообщение об успешном завершении.Отображение сообщения об успехе Ajax

В настоящий момент при нажатии кнопки исчезает и скрывается как следует, но сообщение об успешности не отображается.

$(document).ready(function() { 
    $('form.user_status').submit(function() { 
     var userna = $(this).find("[name='userna']").val(); 
     var joborder_id = $(this).find("[name='joborder_id']").val(); 
     var user_email = $(this).find("[name='user_email']").val(); 
     var app_status = $(this).find("[name='app_status']").val(); 
     // ... 
     $.ajax({ 
      type: "POST", 
      url: "user_status.php", 
      data: { 
       userna: userna, 
       joborder_id: joborder_id, 
       user_email: user_email, 
       app_status: app_status 
      }, 
      success: function() { 
       $('form.user_status').hide(function() { 
        $('div.success').fadeOut(); 
       }); 
       success = 'Status changed'; 
      } 
     }); 
     return false; 
    }); 
}); 

HTML, где сообщение успех должен быть dsplayed

<div class="success" style="display: none;"></div> 
+1

Вам необходимо опубликовать полный код. Этот фрагмент не показывает, что вы описываете в своем вопросе. – Andy

+0

^точно. post ajax call – cr0ss

ответ

1

Вы на самом деле не делать ничего со строкой успеха.

Почему бы не пойти:

success: function(data){ 
    $('form.user_status').hide(); 
    $('div.success').html('Status changed').delay(1000).fadeOut(); 
} 

ПОКА Ваш успех ДИВ не находится внутри формы. Если это так, ваш div сразу исчезнет с формой. Это немного глупо. Примечание. Я добавил данные - вам нужно передать то, что вы вернули (или как вы будете использовать данные, если хотите?)

Показывать нет средств по умолчанию, очевидно, ваш div невидим. fadeout просто собирается сохранить его невидимым конечно?

Редактировать: Я удалил кучу вещей. Если вы просто хотите изменить то, что написано в div, то заставьте его исчезнуть. Вы вставляете html затем fadeout, и он позаботится об этом для вас.

JSFiddle

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

+0

Спасибо, я внес изменения, я фактически заметил, что дисплей не был после того, как я разместил его здесь и изменил его. Мой php-код просто возвращает echo «status Changed»; но ничего не показывает, что кнопки исчезают и т. д., но нет сообщения – user2516043

+0

А я вижу. Моя ошибка, которую вы положили в .hide. Я поправлю свой код, поскольку изменившийся статус успеха должен быть вне его. –

+0

Благодарим вас, https://jsfiddle.net/agcq7d69/ – user2516043

0

В jQuery метод ajax имеет метод успеха, называемый при успешном ответе ajax. Поскольку ajax является асинхронным, после выполнения $ .ajax курсор компиляции перемещается в следующую строку. Независимо от того, какой код вы пишете методом успеха, он будет выполнен сразу после успеха ajax. вам нужно изменить DOM в методе успеха, а не на переменную.

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