ajax请求服务器端脚本(控制器)获取服务器的状态

时间:2015-08-03 07:10:49

标签: javascript php jquery ajax symfony

我想在树枝页面中为按钮获取服务器端响应。举个例子 - 页面中会有2个按钮---

打开/关闭

当页面加载时,它应检查服务器(从elasticsearch数据库检查)是否为两个按钮返回True或

所以对于instanse我们说对于ON按钮它返回“True”它应该将它的颜色改为绿色,就像----

$(this).addClass('btn-success');
$(this).removeClass('btn-primary');

主要目的是检查页面加载时的当前状态。

所以这不是一个点击功能,因为它显示了加载页面时的状态。

这是我的客户端代码---

$(document).ready(function(){
   //send the request with empty data to the server to check the status
   $.post('/url/to/action', {}, function(msg){
     // we return a response like {status: 'on'} to the client if the search is on
     if (msg.status == 'on'){
       $('#my-button').addClass('success');
     }
     // else it is disabled
     else
       $('#my-button').addClass('primary');
   });
});

这是与我的symfony应用程序的集成---

public function getStatusAction(Request $request){
    if ($output = !null) {
        return new \Symfony\Component\HttpFoundation\JsonResponse(array('status' => 'on'));
    } else {
        return new \Symfony\Component\HttpFoundation\JsonResponse(array('status' => 'off'));
    }
}

This is the status when i run to get the status

这是我跑来获取状态时的状态

现在问题是当页面加载时它没有重新启动按钮的状态。 我的意思是如果“status =='on'”按钮应该是绿色而不是主要。

有谁知道如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

为此,您可以使用setInterval

function refreshStatus () {
    $.post('/url/to/action', {}, function (msg) {
        // we return a response like {status: 'on'} to the client if the search is on
        if (msg.status == 'on'){
            $('#my-button').addClass('success');
        }
        // else it is disabled
        else
            $('#my-button').addClass('primary');
    });
}

refreshStatus(); // call on page load
setInterval(refreshStatus, 5000); // call refreshStatus every 5 seconds