用一个页面创建测试,以确定结果(不能访问数据库或php,需要使用javascript/html/等)
Creating quiz with one page that determines outcome (no access to database or php, needs to be in javascript/html/etc.)
注意-我无法访问数据库,也无法使用PHP,这就是我寻求帮助的原因。我的双手被绑住了,只能通过html/javascript/等进行操作
我正在创建一个在线测验,有10个问题(每页1个问题),但只有一个问题决定了4个不同最终地点的结果。问题3(第3页)是决定性的问题,但我需要"记录"单选按钮的选择,所以最后一个问题(第10页)决定了提交按钮的URL,该按钮将重定向用户。
所有其他问题都是虚荣心问题,因为问题3是很大的决定因素。
我在想,问题3(第3页)的答案创建了一个具有4个值中的1个值的cookie(基于单选按钮的选择),然后在最后一个问题(第10页)上读取cookie,该值确定url,然后写入提交按钮的url重定向代码。现在这只是理论,因为我不确定这是否可行。
如有任何建议,我们将不胜感激。
我至少可以看到另外两种方法:
使用iFrame:
在iFrame外部保留隐藏输入。此输入记录答案。提交问题时,iFrame脚本必须将答案(逗号分隔或其他)附加到父级中的隐藏输入。之后,一个新页面将加载到iFrame中。当遇到最后一个问题时,iFrame脚本可以更新并读取父输入,然后确定要加载哪个url,然后将url加载到父文档位置。
使用jQuery Ajax:EDITED删除此处不需要的隐藏输入:
使用jQueryAjax,您可以将下一个问题加载到主div中,并在jQuery脚本中保留所需答案的值。
编辑:这里有另一种方法,使用CSS和javascript/jQuery:
将所有问题加载到一页中。但只有当前的问题具有style='display:block;',其他必须具有style='display:none'。当问题得到回答时,使用javascript或jQuery将答案记录在变量中。在你的情况下,你似乎只对一个答案感兴趣,所以这更容易。然后使用脚本根据应显示的问题更改显示属性。最后,如果这是提交的最后一个问题,您可以确定url并加载下一个页面。
如何从查询字符串中获取参数:
function getQuery(key_str) {
// return value of key_str variables query string of url
// Example: url = "index.html?answer=5"; if key_str = "answerswer" then it returns "5"
if(window.location.search) {
var query = window.location.search.substr(1);
var pairs = query.split("&");
for(var i = 0; i < pairs.length; i++) {
var pair = pairs[i].split("=");
if(unescape(pair[0]) == key_str) return unescape(pair[1]);
}
return null;
}
}
function go() {
var answer = getQuery(answer);
var durl = "http://www.defaulturl.com";
switch (answer) {
case '1' : url = "http://www.url1.com"; break;
case '2' : url = "http://www.url2.com"; break;
case '3' : url = "http://www.url3.com"; break;
default : url = durl;
}
window.location.href = url;
return false;
}
<input type="button" value="Submit" name="butt" onclick="return go();">
为什么不将相关答案作为GET传递?您可以很容易地读取Javascript中的查询字符串。
您的cookie方法可以正常工作。同样适用于HTML5 local storage
。但我不得不问。。。如果你没有在任何地方记录其他9个问题的输出,问他们有什么意义?:)
我会尽我所能避免cookie,只把测验放在一页上。。。我知道你是说你没有后端访问权限,但我只是想把它扔出去。
你可以让用户感觉它实际上是10个"页面",但你的JS会交换"页面"并将表单值存储在一个页面负载中。考虑一个具有10个选项卡的DOM选项卡元素。
完全同意Alex的观点,HTML5本地存储也可以工作。
- 在Javascript中调用PHP数据库变量
- 使用ajax将vales从canvas发送到php数据库
- sql和php数据库条目'落后于'
- 将 php 数据库结果传递给 javascript 数组
- 将 PHP 数据库中的 ID 保存为变量
- .ajax() 没有发布到 PHP 数据库查询
- 将 Javascript 中的复选框总和合并到我的 PHP 数据库表中
- 在按钮单击时用 PHP 数据库中的数据填充组合框,并从数据库中加载选定的值
- 为登录/注册模式实现正确的php数据库访问
- 将php数据库添加到java脚本文件中
- 如何使javascript在php数据库查询后工作
- Cake PHP数据库检查
- AJAX PHP数据库查询不起作用
- 脚本仅返回从 php 数据库中获取的第一个值的 id
- 如何获得php数据库值javascript数组
- PHP数据库-不希望显示javascript代码
- 插入PHP数据库结果到Javascript数组
- 如何在页面点击上运行PHP数据库操作
- 将表单组合中的数据保存到MySQL PHP数据库中
- 使用从PHP /数据库返回的数据创建新表单