【问题标题】:ajax GET request times out for URL when browser and CURL work当浏览器和 CURL 工作时,ajax GET 请求 URL 超时
【发布时间】:2015-09-02 14:11:21
【问题描述】:

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

以下 ajax 请求超时。但是GET 使用浏览器或curl 在同一URL 上请求工作正常。请注意,这是一个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, like Gecko) Chrome/43.0.2357.124 Safari/537.36"

【问题讨论】:

  • 为了清楚起见,我看到代码的 .fail 部分被调用,并将 'textStatus' 设置为超时

标签: jquery ajax amazon-web-services


【解决方案1】:

[解决方案]

原来问题与跨域请求有关。根据以下链接更新服务器代码以添加“Access-Control-Allow-Origin”标头解决了问题

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

【讨论】:

    【解决方案2】:

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

    您必须使用 Github 上的 jsonp plug-in https://github.com/jaubourg/jquery-jsonp,它为您提供错误处理支持并尝试找出究竟出了什么问题

    您可以浏览他们的文档,简单易行

    通过jQuery Documentation。你会注意到

    错误

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

    【讨论】:

    • 除了处理错误之外,我还担心当 GET 请求的其他方法正常工作时,为什么 ajax 会超时。无论如何我会检查JSON插件,看看错误响应是否有更多提示
    • 是的...您应该处理错误以了解究竟是什么问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-19
    • 1970-01-01
    • 2012-04-11
    • 2018-08-10
    • 2019-07-15
    • 2010-12-13
    • 1970-01-01
    相关资源
    最近更新 更多