博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
问卷调查模块实现的过程中的历程
阅读量:6574 次
发布时间:2019-06-24

本文共 2149 字,大约阅读时间需要 7 分钟。

目前,游戏已经到了收尾阶段,为了配合公测,特意做了一个问卷调查模块,用于收集玩家对游戏的反馈。下面使我们的设计历程。

设计之初,我们曾经想过使用数据库保存,为了实现这个模块将增加配置库里2-3个表,因为考虑到这个模块属于不大重要的模块(一次性使用),这样做增加了数据库的维护了成本,我们的游戏的配置表已经很多了很多了。

于是我们使用文件来保存问卷调查的配置信息:

题目的类别: 1: 单选;2: 多选 3:问答

 

题号 => array(        'subject' => '问卷调查的题目',        'type'    => '题目的类别',        'options' => array(            题号 . 序号 => '题目的答案',        ),    ),

如以下的格式:

return array(    2 => array(        'subject' => '你觉得目前游戏在美术方面存在哪些不足?(多选)',        'type' => 2,        'options' => array(            201 => '装备道具贸易品等不够华丽',            202 => '港口场景画不够写实',            203 => '港口场景画不够写实',        ),    ),);

注意:题号和序号的必须联合 ,这样才能保证题目对应相应的答案,这是构造这个数组的特别需要注意的地方。

 

所有的玩家都能参加这次问卷,也就是说这个表不涉及到分库的问题,于是我们在”全局库“中建立一张表,每个用户一条记录,字段有id ,uid, result。result是用户问卷调查的结果的序列化,使用json_encode序列化。

知识点:

1)获取一个文件中的数组,使用include。

2) 构建一个合理的数组

3)问卷调查的设计思路

这次问卷调查的主要需求:

1)每个玩家只做一次问卷调查

2)只有问卷调查所有的题目做完才能提交

针对第一个需求,在提前之前检测一下玩家是否已经提交。对于第2个问题,我们是这样做的:使用一个json保存玩家的选择 格式为{题号:答案},最后统计这个json的长度,和问卷调查的总长度对比,就可以知道题目是否做完,最后,通过ajax把json对象传到服务器,即可统计玩家的选择了。

获取单选题答案

$(".radio1").each(function () {        var questionId = $(this).attr('subject');        var answerId = $("input[type='radio']:checked", this).val();        if (answerId) {            result[questionId] = answerId;        }    });

知识点:

 

1) $.each() 和 $(‘').each()的区别

2)$(':checked')和$(":checked", this)的区别

3)需要验证答案是否为空,因为即使获取不到答案,也会追加到result中

4)动态构建json的方法。

5) $(this).find('')这个函数使用

获取多选题答案:

 

// 获取多选题答案    $(".checkbox2").each(function () {        var questionId = $(this).attr('subject');        var answerId  = [];        // 循环读取多个选择项        $("input[type='checkbox']:checked", this).each(function () {            answerId.push($(this).val());        });        if (answerId.length -> 0) {            result[questionId] = answerId;        }    });

知识点:

1)多选题多选,比单选题,多一次循环

 

2)判断数组为空的方法

获取json的长度,没有专门的函数,只能循环json

 

// 获取json的长度    var j = 0;    for (var i in result) {        j++;    }

提交json到服务器,这里让我想到了,在URL中,可以直接把JS数组传到服务器中,那可不可以把json对象直接传入到URL中呢,最后测试不可以。于是想到了遍历json,自己构建合法的URL,还有一个方法就是 使用jquery $_get() 第二个参数,把json直接传入到服务器。

 

在做这个模块的时候,还遇到一个知识点就是 使用json_decode()把json转成数组,需要加入第二个参数并设置为true,否则是一个对象。

最后学到一点设计的问题,必须检查玩家提交的结果:验证题号和答案的合法性。

转载地址:http://qtgjo.baihongyu.com/

你可能感兴趣的文章
最优化问题中黄金分割法的代码
查看>>
在JS中使用Ajax
查看>>
在Unbuntu 上安装Phalcon
查看>>
Python正则表达式指南
查看>>
常用的加密算法--摘要认证和签名认证的实现
查看>>
webplayer 设置加载图标和屏蔽右键
查看>>
percona-toolkit工具包的安装和使用
查看>>
corosync配置与详解
查看>>
openssl校验SSL证书public key是否配对
查看>>
Jolt大奖获奖图书
查看>>
drools 将添加switch支持
查看>>
android中webview空间通过Img 标签显示sd卡中 的图片
查看>>
android socket编程实例
查看>>
使用SimpleDateFormat出现时差
查看>>
关于linux低端内存
查看>>
url 的正则表达式:path-to-regexp
查看>>
ubuntu 16.04 安装PhpMyAdmin
查看>>
安卓开启多个服务
查看>>
设置分录行按钮监听事件
查看>>
C Primer Plus 第5章 运算符、表达式和语句 5.2基本运算符
查看>>