Rafraîchir une partie de la Page (div)

j'ai un fichier html de base qui est attaché à un programme java. Ce programme java met à jour le contenu d'une partie du fichier HTML chaque fois que la page est rafraîchie. Je veux actualiser uniquement la partie de la page après chaque intervalle de temps. Je peux placer la partie que je voudrais rafraîchir dans un div, mais je ne suis pas sûr de la façon de rafraîchir seulement le contenu du div. Toute aide serait appréciée. Remercier.

70
demandé sur Aaron 2013-07-26 20:35:50

4 réponses

utilisez Ajax pour cela.

construisez une fonction qui va récupérer la page actuelle via ajax, mais pas la page entière, juste le div en question à partir du serveur. Les données seront alors (à nouveau via jQuery) placées dans la même div en question et remplaceront l'ancien contenu par un nouveau.

fonction pertinente:

http://api.jquery.com/load /

p.ex.

$('#thisdiv').load(document.URL +  ' #thisdiv');

Note, la charge remplace automatiquement le contenu. Assurez-vous d'inclure un espace avant le sélecteur d'id.

100
répondu user1721135 2017-11-14 10:17:05

supposons que vous avez 2 divs à l'intérieur de votre fichier html.

<div id="div1">some text</div>
<div id="div2">some other text</div>

le programme java lui-même ne peut pas mettre à jour le contenu du fichier html parce que le html est lié au client, tandis que java est lié au back-end.

vous pouvez cependant communiquer entre le serveur (le back-end) et le client.

ce dont nous parlons est AJAX, que vous réalisez en utilisant JavaScript, je recommande d'utiliser jQuery qui est une bibliothèque JavaScript commune.

supposons que vous voulez rafraîchir la page à chaque intervalle constant, alors vous pouvez utiliser la fonction intervalle pour répéter la même action à chaque fois X.

setInterval(function()
{
    alert("hi");
}, 30000);

vous pouvez aussi le faire comme ceci:

setTimeout(foo, 30000);

où a foo est une fonction.

au Lieu de l'alerte("salut"), vous pouvez exécuter la requête AJAX, qui envoie une requête au serveur et reçoit quelques informations (par exemple le nouveau texte) que vous pouvez utiliser pour charger dans le div.

un AJAX classique ressemble à ceci:

var fetch = true;
var url = 'someurl.java';
$.ajax(
{
    // Post the variable fetch to url.
    type : 'post',
    url : url,
    dataType : 'json', // expected returned data format.
    data : 
    {
        'fetch' : fetch // You might want to indicate what you're requesting.
    },
    success : function(data)
    {
        // This happens AFTER the backend has returned an JSON array (or other object type)
        var res1, res2;

        for(var i = 0; i < data.length; i++)
        {
            // Parse through the JSON array which was returned.
            // A proper error handling should be added here (check if
            // everything went successful or not)

            res1 = data[i].res1;
            res2 = data[i].res2;

            // Do something with the returned data
            $('#div1').html(res1);
        }
    },
    complete : function(data)
    {
        // do something, not critical.
    }
});

où le backend est capable de recevoir des données POST'EED et est capable de retourner un objet de données d'information, par exemple (et très preferable) JSON, il ya beaucoup de tutoriels là-bas avec la façon de le faire, Gson de Google est quelque chose que j'ai utilisé il ya un certain temps, vous pouvez jeter un oeil à elle.

je suis pas professionnel avec Java POST receiving et JSON returning de ce genre donc je ne vais pas vous donner un exemple avec cela, mais j'espère que c'est un bon début.

14
répondu Jonast92 2013-07-26 16:49:55

vous devez faire cela du côté du client par exemple avec jQuery.

disons que vous voulez récupérer le HTML dans div avec L'ID mydiv :

<h1>My page</h1>
<div id="mydiv">
    <h2>This div is updated</h2>
</div>

vous pouvez mettre à jour cette partie de la page avec jQuery comme suit:

$.get('/api/mydiv', function(data) {
  $('#mydiv').html(data);
});

côté serveur, vous devez implémenter handler pour les requêtes venant à /api/mydiv et retourner le fragment de HTML qui va à l'intérieur de mydiv.

voir ceci Le violon que j'ai fait pour vous, pour un plaisir d'exemple à l'aide de jQuery obtenir avec JSON données de réponse: http://jsfiddle.net/t35F9/1/

10
répondu jsalonen 2013-07-26 16:47:04

$.ajax(), $.get(), $.post(), $.load() fonctions de jQuery interne envoyer XML HTTP demande. parmi ceux-ci, le load() n'est dédié qu'à un DOM Element particulier . Voir jQuery Ajax Doc . A détails Q. A. sur ceux-ci sont ici .

1
répondu Mr. Mak 2017-05-23 12:26:23