2014-07-05 61 views
0

我使用window.search.location来获取当前URL的查询字符串。这个查询字符串然后被附加到我的JS文件中的一个php url中,并使用JSON从PHP脚本中获取数据。在URL的末尾获取查询字符串并使用它获取数据

如果我尝试这样做,没有数据返回。但是,如果我硬编码url路径,它确实有效。是否有任何附加查询字符串的原因会导致我的URL路径无效?

当前的URL对于这个例子是:本地主机/沙箱/ examplefile.html地区=测试

实施例文件包含到一个外部JS文件,其代码是下面的引用。

JS代码(不工作):

var queryString = window.location.search; 

var url = "./php/process.php" + queryString; 

//Get list of current users 
d3.json(url, function(error, data) { 

    console.log(data[1]); 

}); 

JS如硬编码的(工作):

var url = "./php/process.php?Region=Testing" 

//Get list of current users 
d3.json(url, function(error, data) { 

    console.log(data[1]); 

}); 

我可以使用的console.log和文件撰写,以证明自己的queryString的值是“?Region = Testing”

有什么建议吗?

编辑:

该代码似乎偶尔工作。当它不起作用时,它返回一个未定义的数组。这可能与JSON异步工作有关吗?

回答

0

您可以使用$_GET在PHP中完成这项工作。你的代码是这样的:

if(isset($_GET['region']) && strlen($_GET['region'])>0) { 
    /*** 
    * The value of $_GET['region'] is Testing if the URL is ./php/process.php?Region=Testing 
    * And so you can use that variable to do your stuff 
    ***/ 
    DoSomething($_GET['region']); 
0

这个答案救了我的一天。

Using d3 with URL query strings

var i=0; 
var tele; 
var search_values=location.search.replace('\?','').split('&'); 
var query={} 
for(i=0;i<search_values.length;i++){ 
    telem=search_values[i].split('='); 
    query[telem[0]]=telem[1]; 
    } 

console.log(query); 

一旦你得到你的查询字符串,您可以访问使用Object.keys()关键,就像这样:

var your_params = Object.keys(query).map(function(key){return query[key];}); 

现在,你可以通过它在d3.json像这样:

d3.json("./php/process.php?<name of your query>" + [your_params], function(error, data) { 

    }); 
相关问题