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到外部服务器,因此现在正在运行,但这是一种愚蠢的处理方式.任何能够对此有所了解的人都将不胜感激.
似乎是一个缓存问题.可以缓存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)