通过javascript发送信息到动态创建的html页面

时间:2014-04-10 12:07:07

标签: javascript html

你好真聪明的人,请问我能帮忙吗?

我使用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多个字符,它就会中断并且没有任何反应。

有关不同方法的想法?

谢谢精彩的人。

1 个答案:

答案 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));
}