IE 11中的网址编码

时间:2015-12-23 07:25:36

标签: javascript angularjs ajax

早安。 我正在使用Angular处理MVC项目,我正在使用JsonResult从具有特定日期的电子邮件列表中返回Json。

这是我从角度

的ajax调用
myApp.service('mailService', function ($http) {
    this.getEmailByDate = function (date) {
        return $http.get("/Home/ShowEmailByDate/", { params: { date: date } });
    };
}); 

我在控制器中的JsonResult

public JsonResult ShowEmailByDate(string date)
{
    var selectedMsg = ClassHelper.listMsg;

    var result = selectedMsg.Select(s => new
    {
        From = s.From.RawValue,
        Date = s.Date.ToString("F"),
        searchDate = s.Date.ToString("dd/MM/yyyy"),
        sortDate = s.Date.ToString("M"),
        sortTime = s.Date.ToString("t"),
        Subject = s.Subject,
        Body = s.BodyHtml,
        Attachments = s.AttachmentFiles.Count(),
        Files = s.AttachmentFiles.Select(f => f.FileName)
    })
    .Where(s => s.searchDate == date)
    .OrderByDescending(s => s.sortDate)
    .ThenByDescending(s => s.sortTime);

    return Json(result, JsonRequestBehavior.AllowGet);
}   

现在问题我只存在于IE中。在chrome和firefox工作正常。我执行ajax调用时在网络选项卡中以开发人员模式看到的链接就像

htttp://localhost:0000/Home/ShowEmailByDate/?date=%E2%80%8E23%E2%80%8E%2F%E2%80%8E12%E2%80%8E%2F%E2%80%8E2015     

所以我得到一个空数组结果[]

在Firefox和Chrome中,链接看起来像

htttp://localhost:0000/Home/ShowEmailByDate/?date=22%2F12%2F2015 and its working fine.

日期参数是一个像22/12/2015'dd / M / yyyy'的字符串

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

您解码Url然后使用它。因为解码IE的所有输出url后,chrome和firefox都是你想要的。

使用 decodeURI()函数解码URI。



var uri = "%E2%80%8E23%E2%80%8E%2F%E2%80%8E12%E2%80%8E%2F%E2%80%8E2015";
var dec = decodeURI(uri);
var res = "Decoded URI: " + dec;
document.getElementById("demo").innerHTML = res;

<p id="demo"></p>
&#13;
&#13;
&#13;