phproot 发表于 2012-1-13 11:06:34

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自动跳转功能,则前面的为空即可。










phproot 发表于 2012-1-13 11:10:28

消息发送方式支持lang:english的方式,来格式化语言。

燃雲 发表于 2012-1-25 10:56:49

把源码改写了一下,写成了个库,弄个可执行的例子,作为调用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。

注释是英文的,已尽量简单,希望大家能看明白。


Hex 发表于 2012-1-25 18:35:52

燃雲 发表于 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]
查看完整版本: javascript类的ajax消息应用。