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

运行grunt后添加%20(空格)的Javascript URL字符串,javascript,json,d3.js,gruntjs,Javascript,Json,D3.js,Gruntjs,TLDR 修正如下 感谢理查德·麦克阿西和亚伦·迪格拉的回答,这让我找到了正确的答案 要清楚的是,格兰特似乎出于某种原因添加了这个空格。修复非常简单 原始问题 我有一个JSON请求,它获取一个JSON文件的内容,用于使用d3.js进行数据可视化 这一切都可以在本地正常工作,但当我运行grunt build时,URL字符串不知从何处被注入%20 下面是运行Grunt之前字符串的外观: d3.json("json/wards-info/"+selectedValue+"-wards-data.jso

TLDR

修正如下

感谢理查德·麦克阿西和亚伦·迪格拉的回答,这让我找到了正确的答案

要清楚的是,格兰特似乎出于某种原因添加了这个空格。修复非常简单

原始问题

我有一个JSON请求,它获取一个JSON文件的内容,用于使用d3.js进行数据可视化

这一切都可以在本地正常工作,但当我运行grunt build时,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 build后,计算的URL字符串更改为:

http://localhost:8080/dist/json/wards-info/liverpool%20-ward-data.json
正如你所看到的,利物浦和沃德之间似乎增加了20%

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

%20通常表示HTML URL编码中的空格,请确保输出中没有空格

您可以使用类似的方法来帮助:

string.replace//g,以去掉空白。其中字符串是您的URL

要么这样,要么试试这个:

.replace/%20/g,

%20通常表示HTML URL编码中的空格,请尝试确保输出中没有空格

您可以使用类似的方法来帮助:

string.replace//g,以去掉空白。其中字符串是您的URL

要么这样,要么试试这个:


.replace/%20/g,

只需检查您选择的值。字符前有空格。请将其拆下,或在使用前调用trim


应该可以解决您的问题。

只需检查您选择的值。字符前有空格。请将其拆下,或在使用前调用trim


应该能解决你的问题。

可能是因为别的原因。%添加20是因为d3.json可能适用的URL转义规则;Grunt在这里不应该有效果,但它的意思是selectedValue以空格字符结尾。我在你的评论中读到,你100%肯定没有,但如果这是真的,那么URL中就不会有%20。电脑添加东西不只是为了好玩,总有原因的

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


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

可能是因为其他原因。%添加20是因为d3.json可能适用的URL转义规则;Grunt在这里不应该有效果,但它的意思是selectedValue以空格字符结尾。我在你的评论中读到,你100%肯定没有,但如果这是真的,那么URL中就不会有%20。电脑添加东西不只是为了好玩,总有原因的

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


如果这不起作用,那么您必须告诉我们更多关于Grunt配置的信息。您是否正在压缩脚本、混淆?你安装了插件吗?还向我们展示Grunt从您的输入中生成的代码。

Well%20是一个空格,那么变量中是否有空格?selectedValue来自何处?可能正是这个值获得了额外的空间/%20。它是由grunt在某处生成的吗?@epascarello中没有空格selectValue@JamesThorpe它来自一个输入字段,字符串中没有空格,我在发出请求之前检查了字符串,没有空格…你确定它不在那里吗?console.logescapeselectedValue;s是否也会被删除?那么%20是一个空格,那么变量中是否有空格?selectedValue从何而来?可能正是这个值获得了额外的空间/%20。它是由grunt在某处生成的吗?@epascarello中没有空格selectValue@JamesThorpe它来自一个输入字段,字符串中没有空格,我在发出请求之前检查了字符串,没有空格…你确定它不在那里吗?console.logescapeselectedValue;s也会掉吗?但是没有空格。我已经试过上面的方法了。。。我可能是一个Grunt问题吗?似乎有东西在调用字符串上的encodeURI,并将空格更改为%20。您能试试吗。替换/%20/g,?对不起,我不是100%确定。我现在已经修好了,我使用了和你建议的相似的方法。对我来说,特别的修正是:selectedValue=selectedValue.replace/\s+/g;但是没有空白。我已经试过上面的方法了。。。

我可能是一个Grunt问题吗?似乎有东西在调用字符串上的encodeURI,并将空格更改为%20。您能试试吗。替换/%20/g,?对不起,我不是100%确定。我现在已经修好了,我使用了和你建议的相似的方法。对我来说,特别的修正是:selectedValue=selectedValue.replace/\s+/g;我很确定在selectedValue上应该有一个,在之前尝试修剪它……这不是我想要的答案。selectedValue中没有空格,因此调用trim是无用的。因此,当您尝试登录到控制台json/wards info/+selectedValue+-wards-data.json时,您没有空格,但在grunt运行之后,它有一个空格?我非常确定selectedValue上应该有一个空格,请尝试在之前对其进行修剪……这不是我想要的答案。selectedValue中没有空格,因此当您尝试登录控制台json/wards info/+selectedValue+-wards-data.json时,调用trim是无用的。您没有空格,但在grunt运行之后,它有一个空格?我理解%20的含义。但selectedValue之后或URL字符串中没有空格。在运行grunt之前,您是否看到它在本地运行良好?它在app文件夹中工作正常,但是dist文件夹在selectedValue之后添加了空格。我看到了你写的内容,但是没有添加。Grunt如何更改应用程序文件夹中的代码?你查过密码了吗?看起来对吗?你调试了吗?嗨,是的,检查并调试了,没有空格,字符串只在两个地方使用,两个地方都没有空格。当我从app文件夹中记录json/wards info/+selectedValue+-wards-data.json时,我得到了json/liverpool-wards.json,但当我从dist文件夹中运行时,我得到了你的advide的json/liverpool-wards.jsontanks,修复结果是:selectedValue=selectedValue.replace/\s+/g,我理解%20意味着什么。但selectedValue之后或URL字符串中没有空格。在运行grunt之前,您是否看到它在本地运行良好?它在app文件夹中工作正常,但是dist文件夹在selectedValue之后添加了空格。我看到了你写的内容,但是没有添加。Grunt如何更改应用程序文件夹中的代码?你查过密码了吗?看起来对吗?你调试了吗?嗨,是的,检查并调试了,没有空格,字符串只在两个地方使用,两个地方都没有空格。当我从app文件夹中记录json/wards info/+selectedValue+-wards-data.json时,我得到了json/liverpool-wards.json,但当我从dist文件夹中运行时,我得到了你的advide的json/liverpool-wards.jsontanks,修复结果是:selectedValue=selectedValue.replace/\s+/g,
http://localhost:8080/dist/json/wards-info/liverpool%20-ward-data.json