想做一个同时兼容Ajax和非Ajax模式的结果显示页,有没有好的思路?

比如,一个Controller 的Action中,我通过 $model->getErrors() 获取到了表单验证的出错结果,是一个数组,想要显示给用户。

怎样做才能使这个结果的输出即适合通过Ajax效果显示给用户,又可以在用户关闭了浏览器的JS后通过普通HTML或者 flash message 显示给用户?

Yii中有没有比较巧妙的解决方案?

谢谢~

谁给个提示啊? :unsure:

CGridView不就是这样的原理?

有个开关,2套原则。。。。差不多是这样吧。

嗯,这个到是,但是,目标仅仅是输出一句消息,也不至于动用CGridView啊。

自己以前写的程序是通过ajax发出的请求会多加一个参数,php程序中判断这个参数,如果是ajax请求,就返回 json 串,否则就渲染普通的HTML视图。

Yii中有没有已经存在的比较巧妙的实现方式?继续求解…

可以考虑使用CActiveForm

http://www.yiiframework.com/doc/api/1.1/CActiveForm

这个问题也许可以解释为这样:

这个结果显示页在禁用Javascript的情况下,页码控制标签均为普通链接,即像以前的老式分页程序一样,每次翻页都由服务器根据请求参数返回新的页面。

同时为启用Javascript的浏览器应用Ajax模式,具体的方法:

动态的修改页码标签的点击事件,取消按钮点击时触发的默认方法——链接跳转,修改为点击后创建xmlHttpRequest并与特定的PHP页面进行Ajax通信。必要的话,可以把Javascript代码封装,然后就可以让用户选择是否开启Ajax模式了。

简单来说:

第一步(后台程序):先实现普通的分页即可;

第二步(前端脚本):添加Javascript代码,修改分页按钮的默认行为(由“链接跳转”转换为“Ajax通讯”)。

总结的比较简略,权当作是抛砖引玉吧。

看来,Yii是没有内置相应的feature了,自己实现吧~

谢谢各位~