脚本标记的源属性中的全局变量使用

时间:2012-08-05 09:40:38

标签: javascript

我运行以下JavaScript代码,该代码从客户端提供我的参数列表,并调用Google融合表SQL语句,该语句将其响应提供给回调函数handleResponse。

<script>

  // get parameter list
  var url = window.location.toString();
  url.match(/\?(.+)$/);
  var params = RegExp.$1;
  var params = params.split("&");
  var queryStringList = {};
  for(var i=0;i<params.length;i++)
  {
    var tmp = params[i].split("=");
    queryStringList[tmp[0]] = unescape(tmp[1]);
  }

  // callback function
  function handleRespose(response)
  {
  }
</script>
<script src="https://www.googleapis.com/fusiontables/v1/query?sql=SELECT data from table&key=myKey&callback=handleRespose"></script>

我的问题是,如何使用queryStringList,如下所示:

<script src="https://www.googleapis.com/fusiontables/v1/query?sql=SELECT " + queryStringList["data1"] + "from table&key=myKey&callback=handleRespose"></script>

1 个答案:

答案 0 :(得分:1)

您必须从JavaScript加载新的JS文件。例如:

var fusiontables = document.createElement("script");
fusiontables.setAttribute("src", "https://www.googleapis.com/fusiontables/v1/query?sql=SELECT " + queryStringList["data1"] + "from table&key=myKey&callback=handleRespose");

document.getElementsByTagName("head")[0].appendChild(fusiontables);

这将以编程方式创建一个新的<script>元素并将其注入页面。请注意,变量不需要是全局的。

如果你把它放在一个函数中,你可以像这样使用它:

// loadscript.js
function loadscript(url) {
    var script = document.createElement("script");
    script.setAttribute("src", url);
    document.getElementsByTagName("head")[0].appendChild(script);
}
 
<!-- page.html -->
<script src="loadscript.js"></script>
<script>
    var queryStringList = {};
    // ... Do stuff to fill queryStringList ...

    var url = "https://www.googleapis.com/fusiontables/v1/query?sql=SELECT " + queryStringList["data1"] + "from table&key=myKey&callback=handleRespose";
    loadscript(url);
</script>