在URL末尾获取查询字符串并使用它来获取数据

时间:2014-07-05 21:29:06

标签: javascript php json d3.js

我正在使用window.search.location来获取当前网址的查询字符串。然后将此查询字符串附加到我的JS文件中的php url,并使用JSON从PHP脚本中获取数据。

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

此示例的当前URL是:localhost / Sandbox / examplefile.html?Region = Testing

示例文件包含对代码如下的外部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和document.write向自己证明queryString值是"?Region = Testing"

有什么建议吗?

编辑:

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

2 个答案:

答案 0 :(得分: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']);

答案 1 :(得分: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) {

   });