运行grunt后添加%20(空格)的Javascript URL字符串

时间:2015-04-07 12:36:04

标签: javascript json d3.js gruntjs

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

这是因为咕噜声还是其他原因?

3 个答案:

答案 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从输入中生成的代码