jQuery GET不在浏览器中发送IE

时间:2011-06-03 06:48:21

标签: jquery ajax internet-explorer post 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("");
    });
}

简单的获取请求将内容放入已连接服务的数据库中,然后发布响应将触发来自本地主机的邮件。

我的问题是:

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

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

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

1 个答案:

答案 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'
相关问题