0

我运行以下 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>
4

1 回答 1

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>
于 2012-08-05T09:45:42.747 回答