在我正在进行的项目中,我有以下代码块:
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("");
});
}一个简单的get requst将东西放入连接服务的数据库中,然后一个post响应从本地主机发出一封邮件。
我的问题是:
在除IE (任何版本)之外的任何其他浏览器中,这都很好地工作,没有任何问题,但是对于IE,GET调用甚至不会出现在网络流量上,它被忽略,而不是调用,但是整个调用仍然是进行的,就好像它通过了OK!
这是https服务的问题,还是我错过了什么?
更新:通过对本地文件的post调用来解决这个问题,该文件在GET请求上向外部服务器发出请求,所以现在正在工作,但这是一种愚蠢的做事方式。任何能对此有所了解的人都将不胜感激。
发布于 2011-06-03 08:26:31
似乎是缓存问题。可以缓存GET请求,因此可以尝试在url中添加一个随机的querystring参数,以避免出现这种情况。或者将$.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) {
...
}
});还要确保你尊重同源政策限制。确保这一点的最佳方法是使用相对urls。因此,与其:
'https://get.request.com/something'用途:
'/something'https://stackoverflow.com/questions/6223892
复制相似问题