如果数据库表的更新没有任何页面重新加载或按钮单击之类的事件,我需要发送实时桌面通知。我正在php,Drupal 7中寻找帮助,
我编写了一个脚本来完成此操作,但是它需要一些事件来触发桌面通知。而我需要不需要事件的东西。
任何输入都会有所帮助
答案 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 }}
这些步骤应该可以让您模拟加载的页面和后端之间的持续通信。