如何获取原始查询字符串数据并使用它来构建iframe源?

时间:2015-01-21 19:11:20

标签: javascript jquery html iframe query-string

我有一个客户端的场景,我试图将查询字符串数据从表单1传递到表单2,然后用联系信息预填充第二个表单。表格2是在第一个表格中表示的,并且#34;谢谢你"页。

以下是人们提交第一个表单并重定向到下一页后网址的显示方式......

http://website.com/thanks/?a=First+Last&b=name%40website.com

以下是表格在iframe

中最初加载到该页面的方式
<iframe id="form2" src="http://website.com/form2" width="315px" height="340px" frameborder="0" marginheight="30" scrolling="no" sandbox="allow-forms allow-scripts allow-top-navigation"></iframe>

我目前对此脚本的尝试将从URL获取查询字符串数据而不解码它(using an answer from stack overflow),然后使用查询字符串数据重建iframe的源,因此表单2具有要拉取的查询字符串数据,可以预先填充。

<script type="text/javascript">

var QueryString = function () {
  // This function is anonymous, is executed immediately and 
  // the return value is assigned to QueryString!
  var query_string = {};
  var query = window.location.search.substring(1);
  var vars = query.split("&");
  for (var i=0;i<vars.length;i++) {
    var pair = vars[i].split("=");
        // If first entry with this name
    if (typeof query_string[pair[0]] === "") {
      query_string[pair[0]] = pair[1];
        // If second entry with this name
    } else if (typeof query_string[pair[0]] === "string") {
      var arr = [ query_string[pair[0]], pair[1] ];
      query_string[pair[0]] = arr;
        // If third or later entry with this name
    } else {
      query_string[pair[0]].push(pair[1]);
    }
  } 
    return query_string;
} ();

window.onload = function loadSite() {
document.getElementById('form2').src = 'http://website.com/form2' + '?a=' + QueryString.a + '&b=' + QueryString.b;
}

</script>

这应该像这样重建iframe代码......

<iframe id="form2" src="http://website.com/form2/?a=First+Last&b=name%40website.com" width="315px" height="340px" frameborder="0" marginheight="30" scrolling="no" sandbox="allow-forms allow-scripts allow-top-navigation"></iframe>

但由于某种原因,它无法正常工作。重建iframe源的功能没有运行,我怀疑它与脚本如何获取查询字符串数据有关。

你知道为什么会这样吗?或者有更好的方法来解决这个问题吗?

感谢您的帮助! :)

1 个答案:

答案 0 :(得分:0)

你只是想要查询,你为什么要把它拆开并把它重新组合在一起?

只需使用

var qs = window.location.search;
var myUrl = "http://www.example.com" + qs;
document.getElementById('form2').src = myUrl;