Update data on a page without refreshing Update data on a page without refreshing ajax ajax

Update data on a page without refreshing


In general, if you don't know how something works, look for an example which you can learn from.

For this problem, consider this DEMO

You can see loading content with AJAX is very easily accomplished with jQuery:

$(function(){    // don't cache ajax or content won't be fresh    $.ajaxSetup ({        cache: false    });    var ajax_load = "<img src='http://automobiles.honda.com/images/current-offers/small-loading.gif' alt='loading...' />";    // load() functions    var loadUrl = "http://fiddle.jshell.net/deborah/pkmvD/show/";    $("#loadbasic").click(function(){        $("#result").html(ajax_load).load(loadUrl);    });// end  });

Try to understand how this works and then try replicating it. Good luck.

You can find the corresponding tutorial HERE

Update

Right now the following event starts the ajax load function:

$("#loadbasic").click(function(){        $("#result").html(ajax_load).load(loadUrl);    });

You can also do this periodically: How to fire AJAX request Periodically?

(function worker() {  $.ajax({    url: 'ajax/test.html',     success: function(data) {      $('.result').html(data);    },    complete: function() {      // Schedule the next request when the current one's complete      setTimeout(worker, 5000);    }  });})();

I made a demo of this implementation for you HERE. In this demo, every 2 seconds (setTimeout(worker, 2000);) the content is updated.

You can also just load the data immediately:

$("#result").html(ajax_load).load(loadUrl);

Which has THIS corresponding demo.


Suppose you want to display some live feed content (say livefeed.txt) on you web page without any page refresh then the following simplified example is for you.

In the below html file, the live data gets updated on the div element of id "liveData"

index.html

<!DOCTYPE html><html><head>    <title>Live Update</title>    <meta charset="UTF-8">    <script type="text/javascript" src="autoUpdate.js"></script></head><div id="liveData">    <p>Loading Data...</p></div></body></html>

Below autoUpdate.js reads the live data using XMLHttpRequest object and updates the html div element on every 1 second. I have given comments on most part of the code for better understanding.

autoUpdate.js

window.addEventListener('load', function(){    var xhr = null;    getXmlHttpRequestObject = function()    {        if(!xhr)        {                           // Create a new XMLHttpRequest object             xhr = new XMLHttpRequest();        }        return xhr;    };    updateLiveData = function()    {        var now = new Date();        // Date string is appended as a query with live data         // for not to use the cached version         var url = 'livefeed.txt?' + now.getTime();        xhr = getXmlHttpRequestObject();        xhr.onreadystatechange = evenHandler;        // asynchronous requests        xhr.open("GET", url, true);        // Send the request over the network        xhr.send(null);    };    updateLiveData();    function evenHandler()    {        // Check response is ready or not        if(xhr.readyState == 4 && xhr.status == 200)        {            dataDiv = document.getElementById('liveData');            // Set current data text            dataDiv.innerHTML = xhr.responseText;            // Update the live data every 1 sec            setTimeout(updateLiveData(), 1000);        }    }});

For testing purpose: Just write some thing in the livefeed.txt - You will get updated the same in index.html without any refresh.

livefeed.txt

HelloWorldblah..blah..

Note: You need to run the above code on the web server (ex: http://localhost:1234/index.html) not as a client html file (ex: file:///C:/index.html).


You can read about jQuery Ajax from official jQuery Site:https://api.jquery.com/jQuery.ajax/

If you don't want to use any click event then you can set timer for periodically update.

Below code may be help you just example.

function update() {  $.get("response.php", function(data) {    $("#some_div").html(data);    window.setTimeout(update, 10000);  });}

Above function will call after every 10 seconds and get content from response.php and update in #some_div.