gpt4 book ai didi

javascript - 如果我没有将回调包装在 function() {} 中,则 jQuery.ajax() 调用成功,否则失败

转载 作者:行者123 更新时间:2023-12-02 15:45:00 25 4
gpt4 key购买 nike

我正在对 Amazon 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")
}
});

当我运行这个时,所有 3 个都会被调用。

  $.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 获取的数据吗?

最佳答案

success 的值应该是 function()

来自$.ajax文档

success

Type: Function( Anything data, String textStatus, jqXHR jqXHR )

在第二个示例中,console.log("success") 将在 JavaScript 解释您的代码时执行。所以这并不意味着你的ajax调用成功了

因此 console.log("success") 将被执行,返回值(如果有)将被分配给 $.ajax success 处理程序。

$.ajax.complete() 无论ajax调用失败还是成功都会被调用。

您的代码有一些语法错误,请参阅下面更正的代码。

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

关于javascript - 如果我没有将回调包装在 function() {} 中,则 jQuery.ajax() 调用成功,否则失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32276267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com