当浏览器和CURL工作时,ajax GET请求因URL而超时

时间:2015-06-17 11:14:36

标签: jquery ajax amazon-web-services

我看到一个类似的问题,但没有接受的答案。

以下ajax请求超时。但GET使用浏览器或curl对同一网址请求正常。请注意,这是cross domain AJAX,因为代码位于不同的服务器上,URL适用于AWS EC2(elastbeanstalk)实例。

有什么线索?

$.ajax({
    url: "http://<edited>.elasticbeanstalk.com/api/v1/Location",
    dataType:'jsonp',
    crossDomain:true,
    timeout:120000
    }).done(function(){
        //do something
        $("#status").html("SUCESS");
    }).fail(function(jqXHR, textStatus){
        if(textStatus == 'timeout')
        {
            //alert('Failed from timeout');
            $("#status").html(textStatus);
            //do something. Try again perhaps?
        }
});

[编辑]补充

当我检查AWS服务器日志时,我看到GET请求以200(成功)响应。但仍然是$ .ajax请求超时

120.138.116.202 - - [17 / Jun / 2015:12:12:31 +0000]“GET / api / v1 / Location HTTP / 1.1”200 144“http://yyyy.xxxx.com/”“Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.36(KHTML,像Gecko)Chrome / 43.0.2357.124 Safari / 537.36“

2 个答案:

答案 0 :(得分:0)

无法处理跨域JSONP请求的错误。

您必须使用Github上提供的jsonp plug-in https://github.com/jaubourg/jquery-jsonp,它可以为您提供错误处理支持并尝试找出确实出错的地方

您可以查看简单易用的文档

浏览jQuery Documentation。你会注意到

  

错误

     

如果请求失败则调用的函数(...)注意:此处理程序   没有调用跨域脚本和跨域JSONP请求。   这是一个Ajax事件。

答案 1 :(得分:0)

[溶液]

原来这个问题与跨域请求有关。更新服务器代码以添加&#39; Access-Control-Allow-Origin&#39;根据下面的链接标题解决了问题

Javascript - No 'Access-Control-Allow-Origin' header is present on the requested resource