IE和Edge将编码后的URL发送到服务器

时间:2018-01-03 18:34:18

标签: javascript date decodeuricomponent

我正在尝试将预订表格中的一些参数发送到在线预订公司的网站。我们的想法是为网站访问者快速重定向,并以日期和日期加上一天(用JavaScript)作为起点。

Chrome和&#; Firefox浏览器。在IE和Edge中,尽管尾部日期是通过编码发送的:

https://xxxxxxx.com/xxxxxx/?startdate=2018-02-28&adults1=1&children1=0&enddate=2018-3-01

Chrome 等工作正常。一旦在 IE Edge 中生成了这个,但它不起作用。它将其发送到服务器:

https://xxxxxxx.com/xxxxxx/?startdate=2018-02-28&adults1=1&children1=0&enddate=%E2%80%8E2018-%E2%80%8E03%E2%80%8E-%E2%80%8E01%E2%80%8E

jQuery(document).ready(function () {
  jQuery('#book-room').click(function () {
    var term = jQuery('#fromdate').val();
    var dateAr = term.split('/');
    var newFromDate = dateAr[2] + '-' + dateAr[1] + '-' + dateAr[0].slice(-2);
    // Plus One Date:
    var myDate = new Date(newFromDate);
    myDate.setDate(myDate.getDate(term) + 1);
    var plusOneDate = myDate.toLocaleString( 'en-GB', { year: 'numeric', month : 'numeric', day : '2-digit' } );
    var newDay = plusOneDate.replace(/\//g, '-');
    var dateAr2 = newDay.split('-');
    var newPlusOneDate = dateAr2[2] + '-' + dateAr2[1] + '-' + dateAr2[0].substr(0); 
    window.open(decodeURIComponent("https://xxxxxxx.com/xxxxxx/?startdate=" + newFromDate + "&adults1=" + newAdults + "&children1=" + newChildren + "&enddate=" + newPlusOneDate), "_blank");
  });
})

newPlusOneDate是造成所有麻烦的变量。 它的格式应为 2018-3-01 ,这在另一端是必需的。表格日期无处不在。

我能够正确格式化日期+一天(newPlusOneDate)变量的唯一方法是使用相当冗长的toLocaleString()函数并将其砍掉。必须有一个更简单的方法。

我也尝试使用decodeURIComponentdecodeURI来摆脱编码但没有成功。

关于如何在没有编码的情况下正确格式化最后一个日期字符串的任何建议都非常受欢迎。

0 个答案:

没有答案