javascript类的ajax消息应用。
本帖最后由 phproot 于 2012-1-16 14:39 编辑public function ajax_message($title = 'Info', $message = '', $status = 'error', $uri = '') {
if (substr($message, 0, 5) == 'lang:')
{
$line = substr($message, 5);
if (FALSE === ($message = lang($line)))
{
return $line;
}
}
$message_array = array(
'title' => (string) $title,
'message' => (string) $message,
'status' => (string) $status,
'uri' =>(string) $uri
);
$_ajax_message_views = $this->load->view('debug/javascript/ajax_message_views', $message_array, TRUE);
$this->load->library('javascript');
$this->javascript->ready($_ajax_message_views);
$this->javascript->compile('ajax_message');
$this->javascript->clear_compile();
}
//javascript/ajax_message_views
<?php if (empty($uri)) :?>
$.messager.alert("<?=$title;?>", "<?=$message;?>", "<?=$status;?>");
<?php else : ?>
location.href = <?=$uri;?>;
<?php endif?>
$this->message->ajax_message('标题','内容','状态','url可选');
<?=$ajax_message;?> //加入到header的视图层里。如果使用url自动跳转功能,则前面的为空即可。
消息发送方式支持lang:english的方式,来格式化语言。 把源码改写了一下,写成了个库,弄个可执行的例子,作为调用Javascript Class的参考。
正如Codeigniter官方说明,Javascript Class仍属实验性质,有错,亦随时会作出大幅度修改,将来版本不一定兼容现时版本,使用时应小心。简单的说是:别怪人家,有问题各安天命!
传统javascript作用是改变显示,属于MVC的V,但在使用AJAX时,不少javascript应归类到C而非V。AJAX的要求需要控制器回应,当中有business logic在内,把AJAX的javascript放到view里并不妥当。
这例子并非AJAX,属于纯粹javascript,仍属于V,但使用方法两者相同,可作参考。
例子由CodeIgniter 2.1.0的下载包出发,进行了以下改动:
1. 删去了无关的user_guide。
2. 加入了css及js目录,属于jQuery 1.7.1及jquery-easy-ui 1.2.5的东西。
3. 加入了application/libraries/message.php及application/languages/english/welcome_lang.php。
4. 修改了application/controllers/welcome.php及application/views/welcome_message.php。
注释是英文的,已尽量简单,希望大家能看明白。
燃雲 发表于 2012-1-25 10:56 http://codeigniter.org.cn/forums/static/image/common/back.gif
把源码改写了一下,写成了个库,弄个可执行的例子,作为调用Javascript Class的参考。
正如Codeigniter官 ...
对于你所说的 AJAX 里有业务逻辑,我觉得这里有一个架构问题。
我个人认为 MVC 从宏观看,可以包含服务器端和客户端,M是服务器端(PHP),C和V是客户端(JS)。
对于你所说的JS应该属于C而不是V,那是因为你这里是一种前端MVC框架,你的PHP应该是M了。
所以,你需要设计或使用一种合适的前端MVC框架,而不是把JS放到PHP的C中。
页:
[1]