在没有页面刷新的情况下更新前端数据?

时间:2017-01-27 06:10:34

标签: jquery ajax

我需要使用当前数据更新db中的数据。我的意思是说db数据是否更新,然后在前端更新,没有页面刷新。

示例:如果div数据是541236&& db数据为541236,如果db数据更新如此547896,则在前端更新此数据,不刷新页面。

这是我的代码示例。

 function recordsCrawled(resp){

    var data = {'action' : 'recordsCrawled'};
    var outPut = '';

    $.post(ajaxurl, data).success(function (resp) {

       //console.log(resp);
        var json = $.parseJSON(resp); // converting response to a json obj

        //console.log(resp);

        var records_crawled = "";
        var today_crawled = "";
        var no_of_hits_today = "";
        var sites_crawled = "";

        //alert(resp)

            for(i in json){
                records_crawled = json[i].records_crawled;
                today_crawled = json[i].today_crawled;
                no_of_hits_today = json[i].no_of_hits_today;
                sites_crawled = json[i].sites_crawled;
                $('#records_crawled').html(records_crawled);
                $('#crwl_today').html(today_crawled);
                $('#no_of_hits').html(no_of_hits_today);
                $('#sits_crawled').html(sites_crawled);
            }

    });
}

3 个答案:

答案 0 :(得分:0)

您可以使用SignalR或Firebase等技术。这些技术对于这种情况非常有效。例如,在SignalR中,您可以在线程上设置Timer对象,以便在特定时间段内检查数据库中的新数据。

public class MetricHub : Hub
{

}

public class BackgroundTicker : IRegisteredObject
    {

        private Timer devicesTimer;
        public BackgroundTicker()
        {
            HostingEnvironment.RegisterObject(this);

            hub = GlobalHost.ConnectionManager.GetHubContext<MetricHub>();
            deviceAvailabilityTimer = new Timer(OnDeviceAvailabilityTimerElapsed, null,
                TimeSpan.FromMinutes(1), TimeSpan.FromMinutes(1));
       }
    private void OnDeviceAvailabilityTimerElapsed(object sender)
    {
        // Code to fetch data from the database
        hub.Clients.All.broadcastDeviceAvailabilityData(finalResult);
    }
 }

这是我参与过的一个例子 这是前端的javascript代码:

hub.client.broadcastDeviceAvailabilityData = function (devicelist) {

}

答案 1 :(得分:0)

将div的文本内容与其对应的新db值进行比较。如果它们不同,请使用新的db值更新div:

if($('your_div').html != new_db_value) {
    $('your_div').html = new_db_value;
}

答案 2 :(得分:0)

这是正确答案的家伙。 我只需要在我的ajax函数端添加它。

.complete(function(){
    setTimeout(function(){recordsCrawled();}, 10000);
}).responseText;