我正在使用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异步工作有关吗?
答案 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) {
});