Javascript URL 字符串在 运行 grunt 之后添加 %20 (space)

Javascript URL string adding %20 (space) after running grunt

TLDR;

固定如下

selectedValue = selectedValue.replace(/\s+/g, '')

感谢:Richard MacarthyAaron Digulla 的答案,这让我找到了正确的答案。

请注意,G运行t 似乎出于某种原因添加了这个空格。修复非常简单...

原始问题

我有一个 JSON 请求,它获取 JSON 文件的内容,用于使用 d3.js.

进行数据可视化

这在本地一切正常,但是当我 运行 g运行t 构建 URL 字符串时,不知从哪里注入了 %20...

这是字符串在 I 运行 G运行t:

之前的样子
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

在我 运行 G运行t 构建计算后 URL 字符串更改为:

http://localhost:8080/dist/json/wards-info/liverpool%20-ward-data.json

如您所见,它似乎在 liverpool-ward

之间添加 %20

这是g运行t的原因,还是其他原因?

%20通常表示HTML中的一个space URL编码,尽量确保你的输出中没有space。

你可以使用这样的东西来帮助:

string.replace(/ /g,'') 去除白色 space。其中字符串是你的 URL.

或者试试这个:

.replace(/%20/g,'')

只需检查您的 selectedValue 值。 - 字符前有一个 space。要么删除它,要么在使用它之前调用 trim。

应该可以解决你的问题。

可能是因为别的原因。添加 %20 是因为 URL 转义规则(d3.json() 可能适用;Grunt 在这里不应该有影响)但它的意思是 selectedValue 以 space字符。我在您的评论中看到,您 100% 确定没有,但如果那是真的,那么 URL 中就不会有 %20。计算机不会只是为了好玩而添加东西,总是有原因的。

所以我的建议是在运行时调试代码以查看变量包含的内容,然后在整个代码库中搜索 -wards-data.json(因为代码中可能有第二个位置您忘记了).

如果这不起作用,那么你必须告诉我们更多关于 Grunt 配置的信息(你在压缩脚本,混淆吗?你安装了插件吗?)同时向我们展示 Grunt 生成的代码您的意见。