IE вызывает странные символы, которые появляются в GET - PullRequest
0 голосов
/ 09 октября 2018

EDIT: один из моих коллег только что упомянул, что IE обрабатывает toLocalDateString () отличается от других браузеров ... Похоже, я буду использовать moment.js для решения этой проблемы.Кроме того, этот вопрос является дубликатом, не уверен, должен ли я удалить его или нет.Вот отличный ответ:

ToLocaleDateString () изменения в IE11

Я вижу странное поведение при выполнении запроса GET с angular.Я вижу только эту проблему в 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 делает что-то напуганное.

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Это публичное поведение / ошибка IE 11 (только в IE11).При использовании метода toLocaleDateString для получения даты он добавляет эти символы Unicode \ (метка слева направо).Чтобы предотвратить это, вы можете использовать метод string.replace () для удаления этих символов.Код как ниже:

var start = date1.toLocaleDateString().replace(/[\u200E]/g, "")
0 голосов
/ 10 октября 2018

можете попробовать javascript encodeURIComponent(url);

https://www.w3schools.com/jsref/jsref_encodeURIComponent.asp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...