2012-08-05 66 views
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> 

回答

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>