我正在处理的项目中有以下代码:
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("");
});
}
简单的获取请求将内容放入已连接服务的数据库中,然后发布响应将触发来自本地主机的邮件。
我的问题是:
在除IE之外的所有其他浏览器(任何版本)中,这非常愉快并且没有任何问题,但是对于IE,GET调用甚至不出现在网络流量上,它被忽略,没有被调用,但是完整打电话仍然好像好了!
这是https服务的问题,还是我错过了什么?
更新 我通过对本地文件进行调用来解决问题,该文件将GET请求ping到外部服务器,因此现在正在运行,但这是一种愚蠢的做事方式。任何能够对此有所了解的人都将不胜感激。
答案 0 :(得分: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) {
...
}
});
另外请确保您尊重same origin policy restriction。确保这一点的最佳方法是使用相对网址。所以而不是:
'https://get.request.com/something'
使用:
'/something'