TLDR;
如下所示固定
selectedValue = selectedValue.replace(/\s+/g, '')
感谢: Richard Macarthy 和 Aaron Digulla 的答案,这让我陷入了沉寂之中正确的答案。
请注意,似乎Grunt出于某种原因添加了这个空格。修复很简单......
原始问题
我有一个JSON请求,它使用d3.js获取要用于数据可视化的JSON文件的内容。
这一切都在本地工作正常,但是当我运行grunt构建时,URL字符串会从中无处注入%20
...
以下是我运行Grunt之前字符串的样子:
d3.json("json/wards-info/"+selectedValue+"-wards-data.json", function(error, newDatas) {
newData = newDatas;
newWardsData = newWardsDatas;
drawMap(newData, newWardsData);
});
其中计算:
http://localhost:8080/app/json/wards-info/liverpool-ward-data.json
运行Grunt后,计算出的URL字符串变为:
http://localhost:8080/dist/json/wards-info/liverpool%20-ward-data.json
如您所见,它似乎是在%20
liverpool-ward
这是因为咕噜声还是其他原因?
答案 0 :(得分:5)
%20
通常代表HTML网址编码中的空格,尝试确保输出中没有空格。
你可以使用这样的东西来帮助:
string.replace(/ /g,'')
将白色空格剥离。其中string是您的URL。
或者试试这个:
.replace(/%20/g,'')
答案 1 :(得分:3)
只需检查您的selectedValue值即可。 -
字符前有一个空格。删除它,或在使用之前调用trim。
应该解决你的问题。
答案 2 :(得分:1)
这可能是因为别的东西。由于URL转义规则(%20
可能适用;添加d3.json()
}而添加selectedValue
,但这意味着%20
以空格字符结尾。我在你的评论中读到,你100%确定没有,但如果这是真的,那么URL中就不会有-wards-data.json
。计算机不是为了娱乐而添加东西,总有一个原因。
所以我的建议是在运行代码时调试代码以查看变量包含的内容,然后在{{1}}的整个代码库中搜索(因为代码中可能存在第二位你忘了)。
如果这不起作用,那么你将不得不告诉我们更多关于Grunt配置的信息(你是在压缩脚本,混淆吗?你有插件吗?)同时向我们展示了Grunt从输入中生成的代码