用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4086|回复: 3
收起左侧

[其它 Other] javascript类的ajax消息应用。

[复制链接]
发表于 2012-1-13 11:06:34 | 显示全部楼层 |阅读模式
本帖最后由 phproot 于 2012-1-16 14:39 编辑
PHP复制代码
 
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();
       }
[size=14px]
复制代码


PHP复制代码
//javascript/ajax_message_views
<?php if (empty($uri)) :?>
$.messager.alert("<?=$title;?>", "<?=$message;?>", "<?=$status;?>");
<?php else : ?>
location.href = <?=$uri;?>;
<?php endif?>
 
复制代码

PHP复制代码
$this->message->ajax_message('标题','内容','状态','url可选');
复制代码
PHP复制代码
<?=$ajax_message;?> //加入到header的视图层里。
复制代码
如果使用url自动跳转功能,则前面的为空即可。










评分

参与人数 1威望 +5 收起 理由
Hex + 5

查看全部评分

 楼主| 发表于 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。

注释是英文的,已尽量简单,希望大家能看明白。
ajax_message.zip (799.31 KB, 下载次数: 28)

评分

参与人数 1威望 +5 收起 理由
Hex + 5

查看全部评分

发表于 2012-1-25 18:35:52 | 显示全部楼层
燃雲 发表于 2012-1-25 10:56
把源码改写了一下,写成了个库,弄个可执行的例子,作为调用Javascript Class的参考。

正如Codeigniter官 ...


对于你所说的 AJAX 里有业务逻辑,我觉得这里有一个架构问题。
我个人认为 MVC 从宏观看,可以包含服务器端和客户端,M是服务器端(PHP),C和V是客户端(JS)。
对于你所说的JS应该属于C而不是V,那是因为你这里是一种前端MVC框架,你的PHP应该是M了。
所以,你需要设计或使用一种合适的前端MVC框架,而不是把JS放到PHP的C中。

本版积分规则