jquery: messages Flash

avec jQuery, Comment puis-je afficher facilement un message flash en haut de la page? Est-il quelque chose de construit, ou un plugin, ou est-il assez facile de le faire vous-même?

ce que je veux dire, c'est qu'après un billet ajax réussi, je voudrais simplement dire "hé, ça s'est bien passé" d'une manière non-gênante.

18
demandé sur Svish 2010-05-19 13:54:12

8 réponses

je voudrais vérifier le les plugins de style grognement jQuery sont disponibles si vous êtes à la recherche de quelque chose de rapide à mettre en oeuvre :)

.ajaxSuccess() serait un bon endroit pour exécuter votre code, ou pour les erreurs .ajaxError(), ceux-ci sont certains de l' global ajax gestionnaires d'événements disponibles par exemple:

$(document).ajaxSuccess(function() {
  //fire success message using the plugin of choice, for example using gritter:
  $.gritter.add({ 
    title: 'Save Complete!',
    text: 'Your request completed successfully.'
  });
});
6
répondu Nick Craver 2010-05-19 10:03:03

j'ai utilisé Notification Bar le faire aussi... Vraiment simple à utiliser.

11
répondu Brian ONeil 2011-11-10 21:29:00

Aucun plugin nécessaire, essayez les solutions suivantes. Ça ressemble beaucoup à celui de stackoverflow. Vous pouvez simplement passer le html à la fonction que vous souhaitez voir

    showFlash: function (message) {
    jQuery('body').prepend('<div id="flash" style="display:none"></div>');
    jQuery('#flash').html(message);
    jQuery('#flash').toggleClass('cssClassHere');
    jQuery('#flash').slideDown('slow');
    jQuery('#flash').click(function () { $('#flash').toggle('highlight') });
},
6
répondu runxc1 Bret Ferrier 2010-05-20 21:15:30

il ne sera pas utile d'utiliser un plugin supplémentaire pour le faire.

Ce que nous faisons, c'est d' ajouter une portée à un conteneur prédéfini ou créer un absolu placé div en ajax succès et ajouter ajax message de réponse. Vous pouvez en outre ajouter un javascript autodestructeur ou un bouton" Effacer " dans cette div pour le supprimer de DOM. JQuery a de bonnes capacités de manipulation DOM.

Comme demandé, voici un sale exemple,

HTML

<div id="message_container" style="display:none">
  <span id="msg"></span>
  <a id="clear_ack" href="#" 
    onclick="$(this).parents('div#message_container').fadeOut(400); return false;">
    clear
  </a>
</div>

JS

var set_message = function(message){
     var container = $('#msg_container');
     $(container).find('span#msg').html(message);
     $(container).show();
}

var set_counter = function(){
    $.ajax({
           type: "POST",
           url: '/some/url/',
           dataType: 'json',
           error: function(response){},
           success: function(response){
              if (responses.message){
                  set_message(responses.message)
              }
           }
       });
};
3
répondu simplyharsh 2010-05-19 12:25:14

je viens d'ajouter à ma page, affiche un indicateur de chargement pour chaque appel ajax (peu importe où il se trouve sur la page)

/* Ajax methods */
/* show the message that data is loading on every ajax call */
var loadingMessage = 'Please wait loading data for page...';
$(function()
{
    $("#AjaxStatus")
    .bind("ajaxSend", function()
    {
        $(this).text(loadingMessage);
        $(this).show();
    })
    .bind("ajaxComplete", function()
    {
        $(this).hide();
    });
});

Et l'état:

<span id="AjaxStatus" class="ui-state-error-text"></span>

OK, basé sur votre commentaire le plus récent, que diriez-vous de cette option par défaut message, ou complexe:

ShowStatus(true, 'Save Failed with unknown Error', 4000);

/* show message for interval */
var saveMessageText = 'Saving...';
function ShowStatus(saveMessage, message, timeInMilliseconds)
{
    var errorMessage = $("#Errorstatus");
    if (saveMessage)
    {
        errorMessage.show();
        var myInterval = window.setInterval(function()
        {
            message = message + '...';
            errorMessage.text(message);
            errorMessage.show();
        }, 1000);
        window.setTimeout(function()
        {
            clearInterval(myInterval);
            errorMessage.hide();
        }, timeInMilliseconds);
    }
    else
    {
        errorMessage.text(message);
        errorMessage.show();
        window.setTimeout('$("#Errorstatus").hide()', timeInMilliseconds);
    };
};

Snip de jquery ajax:

   success: function(msg)
    {
        ShowStatus(true, 'Hey it went well', 4000);
        Process(msg);
    },

  failure: function(msg)
    {
        ShowStatus(true, 'Save Failed with unknown Error', 4000);
    }
1
répondu Mark Schultheiss 2010-05-20 21:10:55

je crois que vous êtes à la recherche de quelque chose comme ceci: http://projects.zoulcreations.com/jquery/growl/

0
répondu jigfox 2010-05-19 09:58:17

j'ai fini par utiliser jquery-avis, qui est vraiment simple et autonome. C'est une licence du MIT, juste un fichier zip avec le .js et .css fichiers, et vous pouvez l'appeler avec quelque chose comme:

<script type="text/javascript">
  $(document).ready( function () {
    jQuery.noticeAdd({
        text: '${flash_get()}',
        stay: true
        });
    return false;
    });
</script>

bien que j'ai aussi aimé la solution de @Brian ONeal pour Informer Bar, qui semble également très simple.

jquery-avis fait une boîte pour chaque message sur le coin supérieur droit de la page. Notification barre tire vers le bas à partir du bord supérieur, et comprend quelques styles différents pour les erreurs, les avis réguliers ou les avis de succès.

0
répondu Sean Reifschneider 2011-09-04 08:39:39

il n'y a pas de fonction intégrée pour les messages flash dans jquery mais vous pouvez utiliser fadein() et fadeout() pour les messages flash avec mise en place d'une transition temporelle.

-1
répondu DANISH TAYYIB 2018-03-06 10:32:26