文章目录
  1. 1. Defined
  2. 2. Main();
    1. 2.1. front-end
    2. 2.2. server-side
    3. 2.3. MySQL
    4. 2.4. EOF

Defined

刚需, 第一次写后端, 第一次前后端分离这么彻底.
项目介绍: 一个在线oj的评测系统(没有后台沙盒什么的跑程序), 有后台和用户端两个入口.
jquery正式接触, 用的不熟..写这篇文章主要是记录一下部分开发过程中遇到的一些实际问题.
CI版本:3.1.2

Main();

front-end

  1. JS控制元素的class(增删改查API)

    div.classList.add(CLASS)
    .remove(CLASS)
    .contain(CLASS)

  2. ajax对php echo的数据处理

    1
    2
    3
    4
    5
    6
    7
    8
    9
    $.ajax({
    ...,
    success: function(data) {
    data = eval(data); // string 转换为json对象
    for (key in data) {
    console.log(data[key]); // 对象遍历
    }
    }
    })
  3. jQuery对ajax的各种封装方法
    https://my.oschina.net/LuckyWinty/blog/637632?fromerr=lVC30yU2

  4. jQuery获取动态绑定对象
    模拟document点击事件

  5. 下拉栏的css设置

server-side

  1. session加载错误
    错误描述:
    Message: mkdir() [function.mkdir]: Invalid argument
    Message: Session: Configured save path ‘’ is not a directory, doesn’t exist or cannot be created.
    解决方案:
    更改 application/config/config.php中的$config['sess_save_path']
    refer:http://codeigniter.org.cn/forums/thread-21295-1-1.html

  2. CI多入口解决方案
    见blog-CI 分类

  3. 改进load->view()进行多页面不同的资源文件加载

    冯义军@德问;方法修改)
    loadfile.php

    1
    2
    3
    4
    $config['loadfile'] = array(
    'js' => array('base'=> array('common.js','base.js','lib.js'),'full' => 'xx.js','xxx1.js','.....','homePage' => 'xxx.js');
    'css' => ....
    )

那么在load view 前更具不同的页面先调用不同的配置:

1
2
3
4
5
$this -> load -> config('loadfile');
$loadFiles = $this -> config -> item('loadfile');
$data['js'] = $loadFiles['js']['homePage'];
$data['css'] = $loadFiles['css']['base'];
$this->load->view("xxx",$data);

在xxx模板页面中写:

1
<?php $this->load->view('header');?>

在header文件中引入js和css的地方写为:

1
2
3
4
5
6
<?php
foreach($js as $jsf)
echo '<script type="text/javascript" src="xxx/js/'.$jsf.'"></script>';
foreach($css as $cssf)
echo '<link rel="stylesheet" type="text/css" href="css/'.$cssf.'" />';
?>

MySQL

  1. 获取排名
    1
    select count(*) + 1 from TABLE where score > (select score from TABLE where id = ID) DESC;

如果有时间字段, 则加一个字段即可.

  1. MySQL中无法对一张表同时update和select
    MySQL Error 1093 - Can’’t specify target table for update in FROM clause

利用别名设置成新表.例子:

1
2
3
4
-- 按照每个用户抢到二楼的数量从多到少对用户排序
SELECT reply_id, count(floor) AS c FROM
(SELECT * FROM replies WHERE floor = 2) AS T
GROUP BY reply_id ORDER BY c;

EOF

后记: 感觉自己开发周期太长了= =

文章目录
  1. 1. Defined
  2. 2. Main();
    1. 2.1. front-end
    2. 2.2. server-side
    3. 2.3. MySQL
    4. 2.4. EOF