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