3

我有一个在 FF、Chrome、Opera 和 Safari 中工作的 ajax 请求。我在 IE 中对其进行了测试,它执行了两个请求中的第一个。它从 php 脚本中获取 IP,但是当它发布到我的 java servlet 时,它不会发出请求;我用小提琴和wireshark进行了测试,请求没有被发送出去。我尝试将 ajax 缓存设置为 false 没有帮助。不确定它可能是什么。php 发送的唯一区别是 IE 不发送 Client Accept-Charset。这让我相信这个问题与第一个请求有关;但是它正确地获取了数据,所以我有点难以理解?我删除了特定地址,但其余代码或多或少相同。
更改了我的代码,以便我没有嵌入式请求,我准备好文档,阻止 IE 冻结但它仍然没有发送出去。它现在还返回 Ajax 请求上的一般错误返回。更改代码更像下面

 <script>
$(function()
{
    function myfunction(event) 
    {  
        var email = $("#emailInput").val();
        if (email.indexOf('@') == -1 || email.indexOf('.') == -1)
        {
            alert("Please Enter a Valid Email");
        }
        else
        {   
            var eEmail = "email:" + email +"," + "ip:" + ip;
            Email = "="+encodeURIComponent(eEmail);

            $.support.cors = true;
            $.ajax(
                {
                url: 'myServletURI',
                type: 'POST',
                data: eEmail,
                cache: 'false',
                error: function(xhr,textStatus)
                {
                    alert(textStatus);
                },
                success: function(data)
                { 
                    //I have a JS lib I wrote to parse results
                    var result = makeDictionary(data);
                    if(result["command"] == "failed")
                    {
                        alert("Error");
                    }
                    else
                    {
                        window.location = "goToNextPage.html";
                    }                                                      
                }
            });
        }
    }
return false;
}); 
</script>

谢谢。

4

2 回答 2

2

您认为这可能是跨站点错误的评论让我觉得这可能是您的答案:Access denied to jQuery script on IE

要点是您不能使用 jquery 在 IE 中进行跨站点 ajax 请求,您必须使用 XDomainRequest。

于 2012-07-13T20:36:35.367 回答
0

我使用“GET”而不是“POST”,它在 IE9 中为我工作

于 2015-02-03T07:18:59.240 回答