我看到一个类似的问题,但没有接受的答案。
以下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“
答案 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