保存或更新任何新数据时,向用户发送桌面通知:php,Drupal7

时间:2018-10-18 10:01:41

标签: php mysql drupal-7

如果数据库表的更新没有任何页面重新加载或按钮单击之类的事件,我需要发送实时桌面通知。我正在php,Drupal 7中寻找帮助,

我编写了一个脚本来完成此操作,但是它需要一些事件来触发桌面通知。而我需要不需要事件的东西。

任何输入都会有所帮助

1 个答案:

答案 0 :(得分:2)

据我所知,没有实现这种功能。尝试通过AJAX调用

  • 使用AJAX在模块的某个位置循环创建myModuleAjax.js文件。

    (function ($) {
      Drupal.behaviors.myModuleAjax = {      
    
        interval: null,
    
        attach: function (context, settings) {
          interval = setInterval(function() {
            //Place where your php script will be.
            $.getJSON(Drupal.settings.basePath + "ajax/ajaxEventCheck.php", {
                //Any data you need to pass to php script. For example table name.
                tableToCheck: "my_table"
              })
              .done(function(json) {
                //Success, got some data, notification logic here.
                alert("changes");
              })
              .fail(function(jqxhr, textStatus, error) {
                //Handle communication failing.
              });
          //Check each 5 seconds.
          }, 5000);
        },
    
      }
    
    } (jQuery));
    
  • 将此脚本添加到页面

    drupal_add_js(drupal_get_path('module', 'myModule') . '/js/myModuleAjax.js');

  • 创建ajaxEventCheck.php脚本,该脚本将检查您的事件(表更新)并以JSON返回信息,该脚本应以

    结尾
    //Your output data is in $data
    
    //End of function - send JSON data and exit.
    header('Content-Type: application/json');
    print json_encode($data);
    die();
    

编辑:假设此脚本不在drupal中,请不要使用drupal_exit(),仅需使用打印的JSON结束脚本,如果您需要脚本内部的drupal功能,则比较棘手,请参阅{{3 }}

这些步骤应该可以让您模拟加载的页面和后端之间的持续通信。