这是一个后续行动: 核心JavaScript功能,使错误,警告或通知消息出现?
基本上, drupal_set_message()
在会话中存储的错误信息。 我需要一种方法来告诉Drupal的VIA JAVSCRIPT不显示这些消息。 如果页面被刷新,将显示这些消息,但我希望立刻显示的方式,迫使他们。
这是一个后续行动: 核心JavaScript功能,使错误,警告或通知消息出现?
基本上, drupal_set_message()
在会话中存储的错误信息。 我需要一种方法来告诉Drupal的VIA JAVSCRIPT不显示这些消息。 如果页面被刷新,将显示这些消息,但我希望立刻显示的方式,迫使他们。
我不知道如果我明白你纠正,但似乎你想要在你的JavaScript的一些反应,并影响显示在Drupal风格的消息。
首先要把事情说清楚时,JavaScript和Drupal(PHP)真的不能彼此交谈得非常好。 唯一的解决办法就是通过AJAX,所以它不会作出任何意义,想从你的JavaScript中使用drupal_set_message()。 原因是,这将是相当困难的,你会刚刚结束与HTML,你将需要添加到您的网页。 因此,这将是更容易只是建立在你的JavaScript的HTML直接,就像我在回答你的其他问题提出的。 因此,所有这将留待将追加效果。 这其实并不难做到,这取决于你的效果。 唯一棘手的部分是从messagefx模块,看来你当前倾斜得到的设置,因为它不会在脚本变量保存任何设置。
所以这种解决方案的代码会是这样的:
$("#something").a_trigger(function () {
$("#messages").append('your html with message').find('the html you inserted').effect(some effect here);
});
根据您要创建的效果,你会调用不同的功能,看看messagefx做什么,在它的周围线55模块文件。
另一种可能性是,你要在任何drupal_set_message()反应。 这困难的部分是要弄清楚时,有一个消息,因为确实没有办法在JavaScript就知道了。 同时认为,大多数消息是提交表单,在页面重新加载反正结果,这是不必要的。 所以,你会创建一个简单的AJAX功能来获取数据开始,并创建自己的单模做到这一点。 基本上所有你需要用hook_menu定义URL,然后在该回调处理Ajax。 你可以从$ _SESSION超全局的消息。
所以回调,将是这个样子
function mymodule_ajax_callback() {
if (isset($_SESSION['messages'] && !empty($_SESSION['messages'])) {
$result = array();
foreach($_SESSION['messages'] as $message) {
$result[] = 'Generate html based on $message';
}
unset($_SESSION['messages']) // Remove the messages so they wont appear twice.
}
return drupal_json($result);
}
其余部分将像第一个解决方案,只有你会得到来自阿贾克斯的HTML代替。
因为这些信息是在会议和/或DB,你必须使用AJAX我猜。 那不是一个很传统的方法。
不得不说,在我的网站这个drupal_set_message()函数经常会显示消息一页太晚了,所以我觉得你的痛苦。