2012-07-11 133 views
2

我有一个在FF,Chrome,Opera和Safari中工作的ajax请求。我在IE中测试了它,它做了两个请求中的第一个。它从一个php脚本获取IP,但是当它发布到我的java servlet时,它不会发出请求;我用小提琴和wireshark进行测试,并且请求没有被发送出去。我试过将ajax缓存设置为false并没有帮助。不知道它可能是什么。在PHP发出的唯一区别是IE不发送客户端接受字符集。这使我相信这个问题与第一个要求有关;然而它正确地获取数据,所以我有点难过的想法?我删除了特定的地址,但其余的代码差不多。
更改我的代码,以便我没有嵌入的请求,我准备好文档,停止IE冻结但它仍然不发送。此外,它现在返回Ajax请求上的一般错误返回值。更改下面的代码更多Jquery Ajax请求不在IE中发送

<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> 

谢谢。

+0

您是否发射了IE浏览器的开发者工具“F12”,并确保有没有在控制台中的任何JavaScript错误?你也可以尝试一步一步的调试,看看你是否能以这种方式获得更多信息。 – MichaC 2012-07-12 00:34:23

+0

是的我得到了更多的数据,但它并没有帮助我,它让我认为它是跨站点错误,但我已经在我的servlet中启用它,正如所有其他浏览器获得响应所示,所以仍然卡住。我回到了XHR元数据 'readyState的 Number' '状态 Number' '状态文本\t“否传输” \t String' – CubanAzcuy 2012-07-12 03:37:48

+0

我可能已经找到了解决办法,此刻不能检查将重新明天发布。 [链接](http://stackoverflow.com/questions/9160123/no-transport-error-w-jquery-ajax-call-in-ie) – CubanAzcuy 2012-07-12 03:56:54

回答

1

你,你认为这可能是一个跨站点错误评论让我,也许这会握着你的答案的事情:Access denied to jQuery script on IE

要点是,你不能使用jQuery使IE跨站点Ajax请求,你必须使用XDomainRequest。

+0

这是问题所在。在你发布这个版本之前就已经解决了这个问题。但是,是的,谢谢。 – CubanAzcuy 2012-07-14 15:57:53

0

我使用“GET”,而不是“POST”,它的工作对我来说在IE9