2015-08-28 5 views
0

Я делаю ajax-вызов Amazon S3 (с правильной настройкой CORS, я считаю).jQuery.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") 
     } 
    }); 

Когда я запускаю это, все 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?

ответ

2

Значение success должно быть function()

От $.ajax документация

успех

Тип: Function (данные Anything, строка textStatus, jqXHR jqXHR)

В вашей второй пример console.log("success"), будет выполнен, когда Java Скрипт интерпретирует ваш код. Таким образом, это не означает, что ваш вызов 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 (Forbidden)

Удар 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> 
Смежные вопросы