我正在对亚马逊的S3进行ajax调用(我相信CORS的设置是正确的)。
当我运行这个时,错误和完成都会被调用。
$.ajax({
type: 'GET',
url: 'https://s3.amazonaws.com/netanalytics-prototyping/test.csv',
dataType: 'text/csv',
crossDomain: true,
success: function() {
console.log("success"),
}
error: function() {
console.log("error")
},
complete: function() {
console.log("complete")
}
});当我运行这个的时候,三个人都会被打电话。
$.ajax({
type: 'GET',
url: 'https://s3.amazonaws.com/netanalytics-prototyping/test.csv',
dataType: 'text/csv',
crossDomain: true,
success: console.log("success"),
error: function() {
console.log("error")
},
complete: function() {
console.log("complete")
}
});有人能解释一下发生了什么吗?也许能告诉我如何处理从S3获得的数据吗?
发布于 2015-08-28 17:15:59
success的值应该是function()
来自$.ajax文档
成功 类型:函数(任何数据、字符串textStatus、jqXHR jqXHR )
在第二个示例中,console.log("success")将在JavaScript解释代码时执行。因此,这并不意味着ajax调用是成功的。
因此,console.log("success")将被强制执行,返回的值(如果有的话)将分配给$.ajax success处理程序。
无论ajax调用失败还是成功,$.ajax.complete()都将被调用。
您的代码有一些语法错误,请参阅下面更正的代码。
$.ajax({
type: 'GET',
url: 'https://s3.amazonaws.com/netanalytics-prototyping/test.csv',
dataType: 'text/csv',
crossDomain: true,
success: function() {
console.log("success");
},
error: function() {
console.log("error");
},
complete: function() {
console.log("complete");
}
});服务器返回403 (禁止)
直接访问URL也会发出拒绝访问的消息
https://s3.amazonaws.com/netanalytics-prototyping/test.csv
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>4D1ECAE7D1971C85</RequestId>
<HostId>
NPT4dfJSGeGQ/kUgv0SGnFwH52lDU69L8+5a5kvPJewFTw/q+Fu+A+lYVpJ7TgV3noDZHDaCZcg=
</HostId>
</Error>https://stackoverflow.com/questions/32276267
复制相似问题