Jquery Ajax + TP3.1.3 使用注意事项

浏览:1179 发布日期:2013/10/30 分类:求助交流 关键字: Jquery ajax
开发了半年的项目,之前用的3.0版本,跨库操作时灵时不灵的。在本站查得说是有这样的问题,说新版本的已修正,于是毫不犹豫的升级了TP到3.1.3。

结果故事还是挺多的!!!!

由于历史问题,当初用的TP+Smarty,一直用3.0开发,挺正常的。升级后第一个问题来了success和error的模板路径识别不对。已发贴求解,这里不多说了
http://www.thinkphp.cn/topic/8088.html

第二个问题就是AJAX问题,并不算什么问题,但值得注意。
新版的ajaxReturn方法做了完善,会根据返回值类型指定输出头信息,很好,很注重细节。
Action.class.php代码细节        if(strtoupper($type)=='JSON') {
            // 返回JSON数据格式到客户端 包含状态信息
            header('Content-Type:text/html; charset=utf-8');
            exit(json_encode($result));
        }elseif(strtoupper($type)=='XML'){
            // 返回xml格式数据
            header('Content-Type:text/xml; charset=utf-8');
            exit(xml_encode($result));
        }elseif(strtoupper($type)=='EVAL'){
            // 返回可执行的js脚本
            header('Content-Type:text/html; charset=utf-8');
            exit($data);
        }else{
            // TODO 增加其它格式
        }
这一来让他们原来Jquery Ajax的代码忧伤了一把。
来看看我们原来的Ajax JS部分$.post(
            $__app__ + "/ProductsShow/save_test",
            data,
            function (msg) {
                var data = eval("(" + msg + ")"); //一般用这个把返回值转成JS的JSON对象
                if (data.status == 0) {
                    // ...
                } else {
                    // ...
                }
            }
        );
JS里加粗部分的代码就报错啦,导致好多应用的JS逻辑跑不完,大汗一把。

幸好问题找到了,自然有解决的方法,改代码去了。

分享一下,望各位注意绕道。


多么希望TP能把一些改进细节搞个日志啊!改了哪些问题,会带来哪些影响等等
最佳答案
评论( 相关
后面还有条评论,点击查看>>