jQuery GET不在浏览器中发送IE

lon*_*aff 4 ajax jquery post internet-explorer get

我正在处理的项目中有以下代码块:

if(!validate($(".emailbody input").val())){
    ...
}
else{
    $.get("https://get.request.com/something", {email:encodeURI($(".emailbody input").val())})
    .complete(function(){
        $(".emailbody").append($('<p class="emailsucess">Kiitos! Linkki rekisteröitymisen jatkamiseen on lähetetty sähköpostiisi: '+$(".emailbody input").val()+'</p>'));
        $.post("http://post.request/confirm.php", {"confirm":$(".emailbody input").val()})
        $(".emailbody input").val("");
    });
}
Run Code Online (Sandbox Code Playgroud)

一个简单的get requst将东西放入连接服务的数据库中,然后一个post响应触发来自本地主机的邮件.

我的问题是:

在IE以外的所有其他浏览器(任何版本)中,这非常愉快并且没有任何问题,但是对于IE,GET调用甚至不出现在网络流量上,它被忽略,没有被调用,但是完整的调用仍然是好像它经历好了!

这是https服务的问题,还是有什么我错过了?

更新: 我通过对本地文件进行调用来解决问题,该文件将GET请求ping到外部服务器,因此现在正在运行,但这是一种愚蠢的处理方式.任何能够对此有所了解的人都将不胜感激.

Dar*_*rov 6

似乎是一个缓存问题.可以缓存GET请求,以便您可以尝试将随机查询字符串参数附加到网址以避免这种情况.或者使用$.ajax具有cache: false:

$.ajax({
    url: 'https://get.request.com/something',
    type: 'GET',
    data: { email: $(".emailbody input").val() } // <-- note that you don't need to encode here, jQuery will take care of this
    cache: false,
    success: function(result) {
        ...
    }
});
Run Code Online (Sandbox Code Playgroud)

还要确保您遵守相同的原始政策限制.确保这一点的最佳方法是使用相对网址.所以代替:

'https://get.request.com/something'
Run Code Online (Sandbox Code Playgroud)

使用:

'/something'
Run Code Online (Sandbox Code Playgroud)