2015-09-11 3 views
0

У меня есть следующий код JS на кнопку мыши:Ajax не оскудела срабатывает, в то время как ошибка делает

$("#processCategories").click(function() { 
    console.log('HERE'); 
    $.ajax({ 
     url: ajaxUrl, // point to server-side PHP script 
     data: {action: 'processCategories'}, 
     type: 'post', 
     done: function() { 
      console.log('SUCCESS'); 
      //location.reload(); 
     }, 
     fail: function (msg) { 
      console.log('FAIL'); 
     }, 
     always: function (msg) { 
      console.log('ALWAYS'); 
     } 
    }); 
}); 

В моем файле PHP, я добавил следующую строку:

header('HTTP/1.0 404 Not found'); 
die(); 

I Мы также пробовали это с запретом.

Итак, консольные журналы: HERE, но не FAIL и ни ALWAYS

Я использую это:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 

documentation говорит:

Deprecation Извещение: jqXHR. Успешно(), jqXHR.error() и jqXHR.complete() обратные вызовы устарели от jQuery 1.8. Чтобы подготовить код для их возможного удаления, вместо этого используйте jqXHR.done(), jqXHR.fail() и jqXHR.always().

Если я переписать их, чтобы в error и complete, оба из них работают.

Что мне не хватает?

UPDATE

.done не работает также. success.

+0

Какая версия jQuery вы используете? – unxp

+0

В этом вопросе. 1.11.3 – vaso123

+0

Показывает ли вкладка Network в инструментах разработчика или firebug, что запрос возвращает 404 ответ? – unxp

ответ

3

Вы вводите в заблуждение методы jqXHR с параметрами $ .ajax.

$.ajax будет возвращение объект jqXHR, и это будет иметь провал метод, так что вы можете сделать:

$.ajax({ 
    url: ajaxUrl, // point to server-side PHP script 
    data: {action: 'processCategories'}, 
    type: 'post' 
}).fail(function (msg) { 
     console.log('FAIL'); 
}); 

$.ajax варианты, которые принимают функции для обработки успеха и ошибок условий являются:

  • полный
  • ошибка
  • успех

методы jqXHR который принимает функции для того же являются:

  • сделано
  • неудачу
  • всегда
  • затем
  • успех (устаревшее)
  • ошибка (устаревшие)
  • полных (устаревшее)
+0

Спасибо, +1, но epascarello был быстрее. – vaso123

+0

@lolka_bolka - быстрее? Его ответ говорит: «Ответил 3 минуты назад», - сказал он, - ответил 4 минуты назад. – Quentin

+0

Исправлено, извините. Как видите, я действительно устал :))) – vaso123

2

Они следуют образцу jQuery's promises так что вам нужно приковать их вызов Ajax.

$.ajax({ 
    url: ajaxUrl, // point to server-side PHP script 
    data: {action: 'processCategories'}, 
    type: 'post'  
}).done(function() { 
    console.log('SUCCESS'); 
    //location.reload(); 
}).fail(function (msg) { 
    console.log('FAIL'); 
}).always(function (msg) { 
    console.log('ALWAYS'); 
}); 
+0

О, мой бог, какой позор .... Моя вина. Спасибо. Я устал, нужно идти домой. – vaso123

Смежные вопросы