编辑:我的一位同事刚刚提到IE处理toLocalDateString()的方式与其他浏览器不同...看来我将使用moment.js来解决此问题。另外,这个问题是重复的,不确定是否应该删除它。这是一个很好的答案:
ToLocaleDateString() changes in IE11
在执行带有角度的GET请求时,我看到一些奇怪的行为。我只在IE11中看到这个问题; Chrome和Firefox都可以。我通过查询字符串参数发送两个日期。我将字符串追加如下:
import { Http, Response, RequestOptions, Headers } from '@angular/http';
....
var date1 = new Date();
var date2 = new Date();
var start = date1.toLocaleDateString();
var end = date2.toLocaleDateString();
var url = '/localhost/someEndPoint?start=' +
start +
'&end=' +
end +
'&value1=' +
data.value1 +
'&value2=' +
data.value2;
return this.http.get(url).
map((response: Response) => <any>response.json())
.publishReplay(1)
.refCount()
.catch(this.handleError);
当我检查网络时,URL中出现奇怪的字符(不确定它们是否会出现在这里)
Request URL: http://localhost:37424/someEndPoint?start=â10â/â9â/â2018&end=â10â/â9â/â2018&value1=-1&value2=-1
如果我要对这些日期进行硬编码,则请求可以顺利通过。对我来说更奇怪的是,如果我这样做(也无需硬编码)也可以使用:
encodeURI(url);
我确定我会丢失一些东西,但是似乎是指向IE做一些时髦的事情。
答案 0 :(得分:0)
您可以尝试使用JavaScript encodeURIComponent(url);
https://www.w3schools.com/jsref/jsref_encodeURIComponent.asp
答案 1 :(得分:0)
这是IE 11的公共行为/错误(仅在IE11中发生)。使用toLocaleDateString方法获取日期时,它将添加这些Unicode字符\ u200E(从左到右标记)。为避免这种情况,可以使用string.replace()方法删除这些字符。代码如下:
var start = date1.toLocaleDateString().replace(/[\u200E]/g, "")