你好真聪明的人,请问我能帮忙吗?
我使用Articulate Storyline创建了一个电子教学课程,需要捕获用户输入的信息并将其从课程发送到他们可以打印的html页面。
我已经找到了如何从课程中获取信息 - 但是我遇到了网址长度的问题(或者至少我认为这是问题!)
以下是我正在使用的javascript:
var player = window.top.GetPlayer();
var header = "Title~~"
var args =(
"Question 1:~~" +
player.GetVar("Q1") +
"~~Question 2:~~" +
player.GetVar("Q2") +
"~~Question 3:~~" +
player.GetVar("Q3") +
"~~Question 4:~~" +
player.GetVar("Q4") +
"~~Question 5:~~" +
player.GetVar("Q5") +
"~~Question 6:~~" +
player.GetVar("Q6") +
"~~Question 7:~~" +
player.GetVar("Q7") +
"~~Question 8:~~" +
player.GetVar("Q8") +
"~~Question 9:~~" +
player.GetVar("Q9")
)
var url = ("print.html?=" + header + args);
window.top.open(url,"_blank","width=800,height=600,menubar=no");
只要我输入简短的答案,它就可以正常工作 - 但如果我尝试为每个问题输入1000多个字符,它就会中断并且没有任何反应。
有关不同方法的想法?
谢谢精彩的人。
答案 0 :(得分:0)
当您提交超过几K的数据时,您必须使用POST而不是GET,例如。提交表单,其中包含METHOD =“POST”而不是window.open。这意味着您需要将print.html更改为服务器进程而不仅仅是html,因为您无法发布到.html页面
但是,在查看您的具体问题后,您可以将代码更改为:
window.open("print.html","_blank","width=800,height=600,menubar=no");
并在print.html中更改
var url = window.location.href.split('?=');
var urlData = url[1];
var printVars = urlData.split('~~');
到
var player = opener.top.GetPlayer();
var printVars = ["Title"];
for (var i=1;i<=9;i++) {
printVars.push("Question "+i+":")
printVars.push(player.GetVar("Q"+i));
}